Recuperer l'etat du bouton de la souris [Résolu]

Messages postés
13
Date d'inscription
lundi 29 novembre 2004
Dernière intervention
4 février 2008
- 3 mai 2006 à 10:51 - Dernière réponse :
Messages postés
5
Date d'inscription
mardi 17 mai 2005
Derniè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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
13
Date d'inscription
lundi 29 novembre 2004
Dernière intervention
4 février 2008
- 3 mai 2006 à 13:03
3
Merci
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)

Merci kor6k 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de kor6k
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
- 3 mai 2006 à 11:17
0
Merci
Compliqué ton histoire pour voir si le pointeur est au dessus de ton bouton

Donc bé moi je propose WM_LBUTTONDOWN
WM_MOUSEMOVE pour voir si le pointeur est sur le bouton

Sinon direction Msdn et recherche sur Mouse Input Overview
if(!Meilleur("Joky")) return ERREUR;<
Commenter la réponse de cs_Joky
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
- 3 mai 2006 à 18:24
0
Merci
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
Commenter la réponse de SAKingdom
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
- 3 mai 2006 à 18:41
0
Merci
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
Commenter la réponse de vecchio56
Messages postés
5
Date d'inscription
mardi 17 mai 2005
Dernière intervention
3 mai 2007
- 4 avril 2007 à 15:37
0
Merci
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)

merci d'avance pour votre aide
Commenter la réponse de ridjy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.