Détecter le passage de la souris ?
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Détecter le passage de la souris ?
Salut,
Comment-est ce que l'on peut faire pour détecter le passage de la souris sur un gadget ?
Merci d'avance pour votre réponse.
Comment-est ce que l'on peut faire pour détecter le passage de la souris sur un gadget ?
Merci d'avance pour votre réponse.
Tu as vérifié dans le forum? Il me semble qu'il y avait un code la dessus. (Pas sur quand même)
Sinon, quand les gadgets sont déclarés dans une énumeration, je fais comme ça.
La boucle For/Next doit suivre l'ordre de l'énumération des gadgets.
Ca vaut ce que ça vaut, mais tant que ça fonctionne...
Sinon, quand les gadgets sont déclarés dans une énumeration, je fais comme ça.
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration
#Button_0
#Button_1
#String_0
#Radio_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 132, 49, 204, 130, "Window 0", #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 5, 5, 195, 25, "Bouton")
ButtonGadget(#Button_1, 5, 35, 195, 25, "Bouton")
StringGadget(#String_0, 5, 65, 195, 25, "String")
OptionGadget(#Radio_0, 5, 95, 195, 30, "Radio")
EndIf
EndIf
EndProcedure
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Static IdGadget
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1
GetCursorPos_(CurPos.POINT)
HObjet = WindowFromPoint_(CurPos\x, CurPos\y)
For i = #Button_0 To #Radio_0 ; Gadgets dans l'ordre ou ils sont énumérés
If HObjet = GadgetID(i) And i <> IdGadget
IdGadget = i : Debug IdGadget
Break
EndIf
Next
EndSelect
EndSelect
EndProcedure
Open_Window_0()
SetTimer_(WindowID(#Window_0), 1, 1, @TimerProc())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
Ca vaut ce que ça vaut, mais tant que ça fonctionne...
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
De plus en plus fort
, sans boucle

Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration 1
#Button_0
#Button_1
#String_0
#Radio_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 132, 49, 204, 130, "Window 0", #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 5, 5, 195, 25, "Bouton")
ButtonGadget(#Button_1, 5, 35, 195, 25, "Bouton")
StringGadget(#String_0, 5, 65, 195, 25, "String")
OptionGadget(#Radio_0, 5, 95, 195, 30, "Radio")
EndIf
EndIf
EndProcedure
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Static IdGadget
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1
GetCursorPos_(CurPos.POINT)
HObjet = WindowFromPoint_(CurPos\x, CurPos\y)
;For i = #Button_0 To #Radio_0 ; Gadgets dans l'ordre ou ils sont énumérés
; If HObjet = GadgetID(i) And i <> IdGadget
; IdGadget = i : Debug IdGadget
; Break
; EndIf
;Next
i = GetDlgCtrlID_(HObjet) ; ID Purebasic à partir du handle
If i >= #Button_0 And i <= #Radio_0
If i <> IdGadget
IdGadget = i : Debug IdGadget
EndIf
EndIf
EndSelect
EndSelect
EndProcedure
Open_Window_0()
SetTimer_(WindowID(#Window_0), 1, 1, @TimerProc())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Ou sans TimerProc()
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration 1
#Button_0
#Button_1
#String_0
#Radio_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 132, 49, 204, 130, "Window 0", #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 5, 5, 195, 25, "Bouton")
ButtonGadget(#Button_1, 5, 35, 195, 25, "Bouton")
StringGadget(#String_0, 5, 65, 195, 25, "String")
OptionGadget(#Radio_0, 5, 95, 195, 30, "Radio")
EndIf
EndIf
EndProcedure
Open_Window_0()
Repeat
GetCursorPos_(CurPos.POINT)
HObjet = WindowFromPoint_(CurPos\x, CurPos\y)
i = GetDlgCtrlID_(HObjet) ; ID Purebasic à partir du handle
If (i >= #Button_0 And i <= #Radio_0) And i <> IdGadget
IdGadget = i : Debug IdGadget
EndIf
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
GetDlgCtrlID_(HObjet) : excellent çà, je connaissais pas.
et hop une macro de plus pour ma collec.
et hop une macro de plus pour ma collec.
Code : Tout sélectionner
Macro GetGadgetId(hObject)
GetDlgCtrlID_(hObject)
EndMacro