Constantes pour la souris

Programmation d'applications complexes
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Constantes pour la souris

Message par Micoute »

Petit programme trouvé sue le forum allemand, traduit par mes soins.

Code : Tout sélectionner

Enumeration 
 #My_Event_LeftClick_Down = #PB_Event_FirstCustomValue
 #My_Event_RightClick_Down
 #My_Event_MiddleClick_Down
 #My_Event_MiddleClick_Up
EndEnumeration

Procedure wc (hWnd, uMsg, wParam, lParam)   
 Select uMsg
    Case #WM_LBUTTONDOWN
        PostEvent(#My_Event_LeftClick_Down)
    Case #WM_RBUTTONDOWN
        PostEvent(#My_Event_RightClick_Down)
    Case #WM_MBUTTONDOWN
        PostEvent(#My_Event_MiddleClick_Down)
    Case #WM_MBUTTONUP
        PostEvent(#My_Event_MiddleClick_Up)
 EndSelect     

 ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


If OpenWindow(0,0,0,200,200,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
 SetWindowCallback(@wc())
 
 Repeat
   
    eventid = WaitWindowEvent()
    
    Select eventid
       
      Case #PB_Event_CloseWindow
        Quitter=1
       
      Case #My_Event_LeftClick_Down
        Debug "Bouton gauche appuyé"
       
      Case #PB_Event_LeftClick
        Debug "Bouton gauche relâché"
       
      Case #My_Event_RightClick_Down
        Debug "Bouton droit appuyé"
       
      Case #PB_Event_RightClick
        Debug "Bouton droit relâché"
       
      Case #My_Event_MiddleClick_Down
        Debug "Bouton milieu appuyé"
       
      Case #My_Event_MiddleClick_Up
        Debug "Bouton milieu relâché"
       
    EndSelect
   
 Until Quitter
EndIf
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Constantes pour la souris

Message par MLD »

@ Micoute
#PB_Event_LeftClick à la place de #WM_LBUTTONUP, les autres ne changent pas et ça fonctionne très bien !
Non ce n'est pas la même chose.
#PB_EventType_LeftClick indique seulement que tu as appuyé sur le bouton gauche de la souris.
#WM_LBUTTONDOWN indique que tu as le doigt qui appuis sur le bouton gauche de la souris. Et
#WM_LBUTTONUP que tu a relaché le bouton.
Ceci est trés utile quand tu veux par exemple indiquer a un morceau de programme que tu fait glisser un curseur quelconque,et que tu arrêtes cette action.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Constantes pour la souris

Message par Micoute »

MLD où as-tu vu que j'avais mis #PB_EventType_LeftClick ?
J'ai mis #PB_Event_LeftClick qui veut dire "Bouton gauche appuyé" !

Sans rancune !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Constantes pour la souris

Message par MLD »

@ Micoute

Si tu te servais du débugger tu saurai de quoi je parle. :mrgreen:
En aucun cas il ne dit que le bouton est enfoncé, mais simplement que le bouton a été enfoncé puis relaché.
#PB_EventType_LeftClick même fonction sur un gadget.

Code : Tout sélectionner

Repeat


  Select WaitWindowEvent()
    Case #PB_Event_LeftClick
     Debug "toto" ;*******************************       
    Case #PB_Event_CloseWindow
      Quit = #True
    Case #PB_Event_Gadget 
    
     
    EndSelect
Until Quit
End    
Se que l'on veut savoir c'est quand le bouton est enfoncé et le reste, et quand il est relevé.
Pour contourer le problème de PB j'ai ceci

Code : Tout sélectionner

HookMouse = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseHook(), GetModuleHandle_(0), 0)
Procedure MouseHook(nCode, wParam, lParam)
  If wParam = #WM_LBUTTONUP
   sap.b = 1
  ElseIf wParam = #WM_MOUSEMOVE Or wParam = #WM_LBUTTONDOWN
    sap.b = 0 
  EndIf
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam)
EndProcedure
Bonne soirée :lol:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Constantes pour la souris

Message par Micoute »

Merci MLD, tu as sûrement raison, mais je ne suis pas aussi évolué que toi en programmation et je ne peux pas te démentir, pourtant j'aimerais être aussi à l'aise pour utiliser les APIs
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Constantes pour la souris

Message par Backup »

en meme temps tout est deja expliqué ici :
http://www.purebasic.fr/french/viewtopi ... =21&t=6664

TUTO NUMERO 5 ;)

c'que j'en dit ...
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Constantes pour la souris

Message par MLD »

@ Micoute
Loing de moi l'idée de te donner une leçon de programmation, et sur ce forum certains sont bien plus fort que moi, notamment en imagerie et en téléphonie/Web.
Mais l'utilisation du débugger et l'observation du résultat, ammène souvent a la solution.
J'ai remarqué que tu observe trés peu ce qui se passe dans les variables. L'observation des variables avec le débugger t'aurais permis dans ton programme de carte de sécu de voir que les chiffres étaient tronqués.
Bonne journée

Michel
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Constantes pour la souris

Message par Micoute »

Bonjour Dobro et MLD et merci beaucoup,
le problème n'est pas que le tuto date de 2004, mais plutôt que PB 5.11 ne reconnaît pas certaines constantes, alors il faut faire de la recherche, je dirais même du bricolage pour se faire comprendre du compilateur, mais en aucun cas je ne veux donner tort à personne, car ce qui compte c'est le résultat et pas qui a raison.
J'ai remarqué que tu observe trés peu ce qui se passe dans les variables. L'observation des variables avec le débugger t'aurais permis dans ton programme de carte de sécu de voir que les chiffres étaient tronqués.
C'est tout à fait vrai et la cause est que quand je programmais dans ma jeunesse, j'avais affaire à des ordinateurs 8 voire 16 bits et donc les types de variables étaient strings et byte, je ne me souviens même pas s'il y avait des float, mais la raison est surtout que je suis auto-dicdacte et que je n'ai pas pris les bonnes habitudes.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Constantes pour la souris

Message par MLD »

@ Micoute
mais la raison est surtout que je suis auto-dicdacte .
A mes yeux tu as d'autant plus de mérite. :lol: :lol:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Constantes pour la souris

Message par Micoute »

Bonjour MLD, mon très cher voisin de département,
A mes yeux tu as d'autant plus de mérite.
Ça reste à prouver, car quand on se fait soi-même comme on dit, on rame beaucoup plus, car on n'a pas tous les outils pour bien travailler et on cherche à réinventer la roue qui roule très bien comme ça et en plus on n'a pas les conseils judicieux de quelqu'un qui nous dirait "Fais d’abords un fichier de REM, ça te permettra d'articuler ton programme autour.", mais j'ai eu de la chance quand j'ai connu PureBasic par hasard, car je voulais une occupation pour passer ma retraite et donc j'ai trouvé énormément de codes écrits par Dobro et beaucoup d'autres qui sont hélas partis du forums et ça m'a beaucoup aidé, car les "Basic" sur C64 ou CPC 6128 n'ont vraiment rien à voir avec le PureBasic de Fred que j'adore (les deux !) et qui me fait progresser tous les jours un peu plus.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre