Page 1 sur 1

Double clic

Publié : jeu. 29/janv./2004 13:28
par Le Soldat Inconnu
Salut,

un petit souci pour aobtenir l'évènement double-clic.
le seul élément que je réussi à obtenir, c'est le simple clic, mais le douvle clic, je ne le voit pas du tout.

une idée ?

voilà le code qui affiche les évènements pour voir ce qui ce passe quand on fait un doubleclic

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
  Repeat
    Event = WaitWindowEvent()
    
    If Event <> 160 And Event <> 512
    
      If Event = #WM_LBUTTONDOWN
        Debug "Bouton gauche appuyé"
      
      ElseIf Event = #WM_LBUTTONUP
        Debug "Bouton gauche relaché"
      
      ElseIf Event = #WM_LBUTTONDBLCLK
        Debug "Double clic gauche"
      
      ElseIf Event = #WM_RBUTTONDOWN
        Debug "Bouton droit appuyé"
      
      ElseIf Event = #WM_RBUTTONUP
        Debug "Bouton droit relaché"
      
      ElseIf Event = #WM_RBUTTONDBLCLK
        Debug "Double clic droit"
        
      Else
        Debug Event
        
      EndIf
      
    EndIf
    
  Until Event = #WM_CLOSE
EndIf

Publié : jeu. 29/janv./2004 13:50
par Le Soldat Inconnu
marche pas non plus comme ceci car je n'ai pas de gadget, je veux détecter le doubleclic dans le vide ou sur une image

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
  
  Repeat
    Event = WaitWindowEvent()
    EventType = EventType()
    
    If EventType = #PB_EventType_LeftClick
      Debug "Clic gauche"
      
    ElseIf EventType = #PB_EventType_LeftDoubleClick
      Debug "Double clic gauche"
      
    ElseIf EventType = #PB_EventType_RightClick
      Debug "Clic droit"
      
    ElseIf EventType = #PB_EventType_RightDoubleClick
      Debug "Double clic droit"
      
    EndIf
    
  Until Event = #WM_CLOSE
EndIf

Publié : jeu. 29/janv./2004 21:26
par Anonyme2
Salut Régis,

le deuxième code peut pas marcher car les événements sont liés à des gadgets.

Pour le premier code, je ne sais pas si PB retourne les événements que tu tentes de capturer, utilise une callback pour gérer les messages WM_LBUTTONDBLCLK etc.

Publié : jeu. 29/janv./2004 22:22
par Le Soldat Inconnu
le deuxième code peut pas marcher car les événements sont liés à des gadgets.
j'ai dit quoi dans mon message ?? hein, alors, tu as encore lu mon message en diagonal :lol: :wink:

bon, avec le wincallback, v essayé de voir si l'évènement que je cherche si trouve

Publié : jeu. 29/janv./2004 22:35
par Le Soldat Inconnu
marche pas avec le callback ou alors je l'ai codé comme un cochon :cry:

Publié : jeu. 29/janv./2004 22:56
par Le Soldat Inconnu
j'ai réussi à obtenir qlq chose qui marche

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
  
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #WM_LBUTTONDOWN And (DoubleClic = 0 Or DoubleClic = 2)
      DoubleClic = DoubleClic + 1
    ElseIf Event = #WM_LBUTTONUP And DoubleClic = 1
      DoubleClic = DoubleClic + 1
    ElseIf Event = #WM_LBUTTONUP And DoubleClic = 3
      Debug "Double clic gauche"
      DoubleClic = 0
    Else
      DoubleClic = 0
    EndIf
    
    If Event = #WM_RBUTTONDOWN And (DoubleClic = 0 Or DoubleClic = 2)
      DoubleClic = DoubleClic + 1
    ElseIf Event = #WM_RBUTTONUP And DoubleClic = 1
      DoubleClic = DoubleClic + 1
    ElseIf Event = #WM_RBUTTONUP And DoubleClic = 3
      Debug "Double clic droit"
      DoubleClic = 0
    Else
      DoubleClic = 0
    EndIf
    
  Until Event = #WM_CLOSE
EndIf

Publié : jeu. 29/janv./2004 23:06
par Chris
Faut cliquer où, pour voir quelque chose???

Parce que chez moi, j'ai beau cliquer comme un fou partout sur l'écran, y'a rien qui s'affiche :roll: :lol:

Chris :)

Publié : jeu. 29/janv./2004 23:16
par Chris

Code : Tout sélectionner

Procedure.l GetMouseMessage(WinID.l, Message.l, wParam.l, lParam.l) 
  resultat.l = #PB_ProcessPureBasicEvents 
  Select Message 
    Case #WM_LBUTTONDBLCLK 
      Debug "Double clic Gauche"
    Case #WM_RBUTTONDBLCLK
      Debug "Double clic Droit"
    Case #WM_MBUTTONDBLCLK
      Debug "Double clic Milieu"
      
  EndSelect 
  ProcedureReturn resultat 
EndProcedure 

hWnd = OpenWindow(0, 100, 100, 100, 100, #PB_Window_SystemMenu|#PB_Window_ScreenCentered , "Double clic") 
  SetClassLong_(hWnd, #GCL_STYLE, GetClassLong_(hWnd, #GCL_STYLE)|#CS_DBLCLKS) 
  SetWindowCallback(@GetMouseMessage())
  Repeat
    Select WindowEvent()
      Case #PB_Event_CloseWindow : quit = 1
    EndSelect
  Until quit = 1 
End 
Ca irait pas, ça???

C'est pas de moi!!!, (enfin, je ne pense pas :lol: ). J'ai du piquer ça dans CodeArchiv, mais je ne sais plus ou :roll:

C'est dans un de mes projets non terminés, (comme tant d'autres...). J'ai juste viré les fonctions pour mettre les debug à la place

Chris :)

Publié : ven. 30/janv./2004 9:52
par Le Soldat Inconnu
si ça marche pas chez toi, c parce quand tu double clic, tu bouge la souris :lol:

bon, je me suis débrouiller avec ton code, j'ai viré le callback et c bon

Code : Tout sélectionner


If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
  
  SetClassLong_(WindowID(), #GCL_STYLE, GetClassLong_(WindowID(), #GCL_STYLE) | #CS_DBLCLKS) ; Active la gestion du double clic
  
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #WM_LBUTTONDOWN
      Debug "Bouton gauche appuyé"
      
    ElseIf Event = #WM_LBUTTONUP
      Debug "Bouton gauche relaché"
      
    ElseIf Event = #WM_LBUTTONDBLCLK
      Debug "Double clic gauche"
      
    ElseIf Event = #WM_RBUTTONDOWN
      Debug "Bouton droit appuyé"
      
    ElseIf Event = #WM_RBUTTONUP
      Debug "Bouton droit relaché"
      
    ElseIf Event = #WM_RBUTTONDBLCLK
      Debug "Double clic droit"
      
    EndIf
    
  Until Event = #WM_CLOSE
EndIf