Page 1 sur 1

Constantes pour la souris

Publié : jeu. 25/avr./2013 12:17
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

Re: Constantes pour la souris

Publié : jeu. 25/avr./2013 14:52
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.

Re: Constantes pour la souris

Publié : jeu. 25/avr./2013 16:12
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 !

Re: Constantes pour la souris

Publié : jeu. 25/avr./2013 17:33
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:

Re: Constantes pour la souris

Publié : jeu. 25/avr./2013 18:20
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

Re: Constantes pour la souris

Publié : jeu. 25/avr./2013 21:59
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 ...

Re: Constantes pour la souris

Publié : ven. 26/avr./2013 9:11
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

Re: Constantes pour la souris

Publié : ven. 26/avr./2013 9:14
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.

Re: Constantes pour la souris

Publié : ven. 26/avr./2013 13:09
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:

Re: Constantes pour la souris

Publié : ven. 26/avr./2013 14:58
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.