kor6k
Messages postés13Date d'inscriptionlundi 29 novembre 2004StatutMembreDernière intervention 4 février 2008
-
3 mai 2006 à 10:51
ridjy
Messages postés5Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention 3 mai 2007
-
4 avril 2007 à 15:37
bonjour,
Je crois que mon titre est assez explicite mais je vais quand même apporter plus de précisions:
Je suis en train de creer une classe bouton pour pouvoir personnaliser mes boutons.
J'ai fait dans cette classe un timer qui toutes les 100 ms regarde l'etat de la souris et en fonction de ça, dessine le bouton comme il convient. par exemple, avec GetCursorPos et GetWindowRect, je peux savoir si le curseur est sur mon bouton.
Par contre, je n'arrive pas à savoir si le bouton de ma souris est enfoncé ou non... existe t-il une fonction pour ça?
merci
kor6k
Messages postés13Date d'inscriptionlundi 29 novembre 2004StatutMembreDernière intervention 4 février 2008 3 mai 2006 à 13:03
merci mais j'ai déjà trouvé la réponse:
il faut utiliser GetAsyncKeyState:
bLeftButton = (GetAsyncKeyState(VK_LBUTTON) & 0x8000);
bRightButton = (GetAsyncKeyState(VK_RBUTTON) & 0x8000);
bMiddleButton = (GetAsyncKeyState(VK_MBUTTON) & 0x8000);
si dans la valeur de retour le bit le plus fort est positionné ça voudra dire que la touche est enfoncée .
d'ou le test à 0x8000 (32768)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 3 mai 2006 à 18:24
Ben si tu travail avec l'API windows, je vois pas pourquoi tu utilise pas la méthode de joky. C'est la meilleur pour l'API win32. Et en plus, cette méthode assure une continuité des informations (en gros ça veut dire que c'est pas tester seulement toute les 100ms mais c'est une commande qui est envoyer au programme. Donc c'est quasi instantané(quasi car il peut y avoir d'autre commande dans la chaine)). Je sais pas si tu comprend tout ce que je vien de dire.
___________________________________________
Les plus grands esprits trouvent toujours une solution
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201013 3 mai 2006 à 18:41
Pour ma part, j'ai aussi passé pas mal de temps a chercher ca, avant de me rendre compte que c'était GetAsyncKeyState qu'il fallait utiliser. Ils sont gentils, GetAsyncKeyState est dans la section Keyboard, mais pas Mouse...
Mais effectivement ici, quand le pointeur est au dessus du bouton, tu recois un WM_MOUSEMOVE, ainsi que WM_SETCURSOR
Vous n’avez pas trouvé la réponse que vous recherchez ?
ridjy
Messages postés5Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention 3 mai 2007 4 avril 2007 à 15:37
Bonjour à tous,
j'ai un gros soucis avec visual 2005 en C++.
j'ai développé un programme d'acquisition à distance. Je lance l'acquisition en cliquant sur un simple bouton mais je dois l'arrêter à distance avec une télécommande sans fil géré par windows comme une souris en double cliquant sur le click droit. Le problème étant que je suis coincé dans mon sous programme "acquisition()" et que je ne vois pas les changement de l'état de la souris. Comment faire? J'ai tenté les
while(!(GetAsyncKeyState(VK_RBUTTON ) && GetAsyncKeyState(VK_RBUTTON )))
{
//acquisition
// c'est ici que restes coincé mon programme
}
visual me dit : 1>acquisition.obj : error LNK2028: jeton non résolu (0A00007B) "extern "C" short __stdcall GetAsyncKeyState(int)" (?GetAsyncKeyState@@$$J14YGFH@Z) référencé dans la fonction "void __clrcall acquit(class global)" (?acquit@@$$FYMXVglobal@@@Z)