Konar a écrit :
soit plus clair, la c'est trop incomprehensible.
juste un truc : ca depend de ce que IsButtonDown() fait, mais en theorie faut eviter ce genre de choses, pasque tant que tu restes dans le while et si ce dernier est dans le thread principal, bah tu bloques tous tes autres handlers.
|
En faite, j'essaie d'importer sur PC une série de travaux donc certains controles que j'avais développés sur Mac.
Lorsque tu sorts d'une listcontrole normal tout en restant avec le click gauche enfoncé, ta liste défile automatiquement pour te montrer les éléments du bas ou haut qui en temps normal pour les voire, tu aurais dû chipoter au ControlBar de la listbox.
Le problème est que les choses sont légèrement différentes sur PC que sur Mac.
Sur mac qd un clickdown était effectué, je recevais l'appel et je gérais tout moi même à partir de là :
Code :
- pascal ControlPartCode ListBoxPaneHitTestProc(ControlRef theControl, Point where)
- {
- while(!isButtonDown())
- {
- // 1 Vérifie où le click s'est passé
- // 2 Valide et dessine la liste avec les nv paramètres
- // dans mon buffer.
- // 3 Affiche le tout dans la fenêtre., donc sans passer par
- // OnPaint et compagnie.
- }
- // Ici tout revenait à la normal...
- }
|
Sur PC, je dois créer une variable de type BOOL et la true fier
qd ButtonDown est appelé et la false ier qd ButtonUp est appelé.
Pour les mouvements, tous ce passe dans MouseMove mais comme sont nom l'indique, ce n'est appelé que qd la souris bouge.
Donc qd mon curseur sort de la liste, la liste défile uniquement qd le curseur bouge (je veux que ca continue à bouger sans mouvement).
Cela dit, j'ai une astuce, utiliser OnTimer mais c'est vachement bricolage.
Voilà...
Message édité par iS@mi le 20-04-2003 à 02:14:11