Code : Tout sélectionner
;Bouton 3 etats
;
EnableExplicit
;Un gadget est il survolé (Joli macro hein ?"
Macro GadgetHoverCheck(x, y, Gadget)
(((Not x<GadgetX(Gadget)) & (Not y<GadgetY(Gadget))) &(Not x>=(GadgetX(Gadget)+GadgetWidth(Gadget))) & (Not y>=(GadgetY(Gadget)+GadgetHeight(gadget))))
EndMacro
Enumeration
#MainForm
#ButtonImage1 ;Bouton Image 1
#ButtonImage2 ;Bouton Image 2
#ButtonImage3 ;Bouton Image 2
#ImageState_Normal ;Image etat normal
#ImageState_Hover ;Image etat Survolé
#ImageState_Click ;Image etat Cliqué
EndEnumeration
Global Click.i, WinMouseX.i, WinMouseY.i
Procedure InitResource()
;Chargement de l'image
LoadImage(#ImageState_Normal , "CmState1.bmp")
LoadImage(#ImageState_Hover , "CmState2.bmp")
LoadImage(#ImageState_Click , "CmState3.bmp")
EndProcedure
;Il y a t'il un bouton survolé
Procedure GetButtonHover()
WinMouseX = WindowMouseX(#mainform)
WinMouseY = WindowMouseY(#mainform)
If Click<>1
If GadgetHoverCheck(WinMouseX, WinMouseY, #ButtonImage1)
SetGadgetState(#ButtonImage1, ImageID(#ImageState_Hover))
Else
SetGadgetState(#ButtonImage1, ImageID(#ImageState_Normal))
EndIf
EndIf
If Click<>2
If GadgetHoverCheck(WinMouseX, WinMouseY, #ButtonImage2)
SetGadgetState(#ButtonImage2, ImageID(#ImageState_Hover))
Else
SetGadgetState(#ButtonImage2, ImageID(#ImageState_Normal))
EndIf
EndIf
If Click<>3
If GadgetHoverCheck(WinMouseX, WinMouseY, #ButtonImage3)
SetGadgetState(#ButtonImage3, ImageID(#ImageState_Hover))
Else
SetGadgetState(#ButtonImage3, ImageID(#ImageState_Normal))
EndIf
EndIf
EndProcedure
;Affichage de notre fenetre
Procedure MainFormShow()
OpenWindow(#MainForm,0,0,500,300,"Bouton Images",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
ImageGadget(#ButtonImage1,10,20,106,32, ImageID(#ImageState_Normal))
ImageGadget(#ButtonImage2,120,20,106,32, ImageID(#ImageState_Normal))
ImageGadget(#ButtonImage3,230,20,106,32, ImageID(#ImageState_Normal))
EndProcedure
InitResource()
MainFormShow()
Repeat
GetButtonHover()
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #ButtonImage1
Click=1
SetGadgetState(#ButtonImage1, ImageID(#ImageState_Click))
Debug "Bouton 1"
Case #ButtonImage2
Click=2
SetGadgetState(#ButtonImage2, ImageID(#ImageState_Click))
Debug "Bouton 2"
Case #ButtonImage3
Click=3
SetGadgetState(#ButtonImage3, ImageID(#ImageState_Click))
Debug "Bouton 3"
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver