EventMouse (Tentative d'une solution Cross Platform)
Publié : sam. 19/févr./2011 4:20
Je ne pense pas me tromper en disant qu'il n'y a pas encore de solution simple pour détecter la souris dans le cadre d'une application Cross-Platform (Windows, Linux, Mac). En attendant une vrai fonction EventMouse intégrée à Pure Basic, vous trouverez le code d'une procédure qui fonctionne pour le moment sous Windows et Linux (Unbutu).
J'ai besoin de vous pour pour tester cette procédure dans les différentes distributions de Linux et j'aimerais aussi que ceux qui connaissent l'APIs Mac complètent cette procédure et pourquoi pas aussi d'autres environnements.
Merci d'avance à tous ceux qui participeront à l'élaboration de cette procédure
J'ai besoin de vous pour pour tester cette procédure dans les différentes distributions de Linux et j'aimerais aussi que ceux qui connaissent l'APIs Mac complètent cette procédure et pourquoi pas aussi d'autres environnements.
Merci d'avance à tous ceux qui participeront à l'élaboration de cette procédure

Code : Tout sélectionner
Procedure EventMouse()
Protected wnd.i
If GetActiveWindow()<>-1
Wnd=WindowID(GetActiveWindow())
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
Protected gdkWnd.l, x.l, y.l, mask.l
*Window.GTKWindow = Wnd
gdkWnd = *Window\bin\child\window
gdk_window_get_pointer_(gdkWnd, @x, @y, @mask)
If (mask & #GDK_BUTTON1_MASK)
ProcedureReturn 1
ElseIf (mask & #GDK_BUTTON3_MASK)
ProcedureReturn 3
ElseIf (mask & #GDK_BUTTON2_MASK)
ProcedureReturn 2
EndIf
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
ProcedureReturn Abs(GetAsyncKeyState_(#VK_LBUTTON) + GetAsyncKeyState_(#VK_RBUTTON)*2 + GetAsyncKeyState_(#VK_MBUTTON)*3)/$8000
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
;
;
CompilerEndIf
EndIf
Delay(500)
EndProcedure
;----- Test---------------
OpenWindow(0, 100, 100, 300, 300, "EventMouse")
TextGadget(1,20,10,200,20,"Teste Mouse Event")
Repeat
Event = WaitWindowEvent()
EventMouse=EventMouse()
Select EventMouse()
Case 0 : SetGadgetText(1,"Bouton relaché")
Case 1 : SetGadgetText(1,"Bouton Gauche de la souris")
Case 2 : SetGadgetText(1,"Bouton Droit de la souris")
Case 3 : SetGadgetText(1,"Bouton Milieu de la souris")
EndSelect
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
ForEver