Double clic

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Double clic

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

marche pas avec le callback ou alors je l'ai codé comme un cochon :cry:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre