Code : Tout sélectionner
#Container=0
#Button1 = 1
#Text1 = 2
#Panel = 3
#Button2 = 4
#Text2 = 5
#MouseIn=256
#MouseOut=512
Global MouseQuit
Procedure MouseOver(Window)
Static message,MemGadget.w=65535,MemParent.l=0,MemHandle.l
Repeat
GetCursorPos_(@point.POINT)
handle=WindowFromPoint_(point\X,point\Y)
Thread1 = GetWindowThreadProcessId_(Window, @Pid1)
Parent= GetParent_(handle)
Thread2 = GetWindowThreadProcessId_(Parent, @Pid2)
GadgetID= GetDlgCtrlID_(handle)
If Thread1=Thread2
If MemGadget <> GadgetID
message=1
PostMessage_(MemParent,#WM_COMMAND,#MouseOut<<16+MemGadget,MemHandle)
PostMessage_(Parent,#WM_COMMAND,#MouseIn<<16+GadgetID,handle)
MemGadget= GadgetID
MemParent= Parent
MemHandle= handle
EndIf
Else
If message=1
PostMessage_(MemParent,#WM_COMMAND,#MouseOut<<16+MemGadget,MemHandle)
MemGadget=65535
message=0
EndIf
EndIf
Delay(50)
Until MouseQuit=1
EndProcedure
If OpenWindow(0, 0, 0, 320, 360, "ContainerGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindow(1, 0, 0, 320, 360, "", #PB_Window_SystemMenu )
CreateThread(@MouseOver(),WindowID(0))
CreateGadgetList(WindowID(0))
ContainerGadget(#Container, 8, 8, 306, 133, #PB_Container_Raised)
ButtonGadget(#Button1, 10, 20, 120, 20, "Bouton 1",#PB_Text_Border)
TextGadget(#Text1, 130, 20, 120, 20, "Bouton 2",#PB_Text_Border)
SetGadgetText(#Button1,"Bouton 1")
SetGadgetText(#Text1,"Texte2")
CloseGadgetList()
PanelGadget (#Panel, 10, 160, 300, 100)
AddGadgetItem (#Panel, -1, "Onglet 1")
ButtonGadget(4, 10, 15, 120, 20,"Bouton 1")
TextGadget(5, 130, 15, 120, 20,"Bouton 2",#PB_Text_Border)
CloseGadgetList()
Repeat
Event.l=WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Button1
Select EventType()
Case #PB_EventType_LeftClick
Debug "Click1"
Case #MouseIn
SetGadgetText(#Button1,"Mouse over Bouton 1")
Case #MouseOut
SetGadgetText(#Button1,"Mouse quit Bouton 1")
EndSelect
Case #Text1
Select EventType()
Case #MouseIn
SetGadgetText(#Text1,"Mouse over Texte 1")
Case #MouseOut
SetGadgetText(#Text1,"Mouse quit Texte 1")
EndSelect
Case #Button2
Select EventType()
Case #PB_EventType_LeftClick
Debug "Click2"
Case #MouseIn
SetGadgetText(#Button2,"Mouse over Bouton 2")
Case #MouseOut
SetGadgetText(#Button2,"Mouse quit Bouton 2")
EndSelect
Case #Text2
Select EventType()
Case #MouseIn
SetGadgetText(#Text2,"Mouse over Texte 2")
Case #MouseOut
SetGadgetText(#Text2,"Mouse quit Texte 2")
EndSelect
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
MouseQuit=1
EndIf
Vous pouvez remplacer le thread par un timer au besoin.