Page 1 sur 1

Evenement passage souris sur gadget

Publié : mer. 13/nov./2013 10:16
par omega
Bonjour,

Sûrement ça existe mais j'avoue que je n'ai rien trouvé sur l'aide, j'utilise une ancienne version sur ce pc (autre que le mien).

Ma question: comment savoir si le pointeur de la souris se trouve sur un gadget image? (comme le link du web).

Il y a sûrement un évènement windows pour tester ça je crois (enfin normalement ça doit exister, car c important)

Je veux juste changer l'image dès que l'utilisateur amène sa souris sur une image.

Merci

Re: Evenement passage souris sur gadget

Publié : mer. 13/nov./2013 10:31
par Backup

Code : Tout sélectionner

; Détecte le passage de la souris au dessus d'un Gadget
; on peut ainsi récupérer son ID ou son Handle
; il faut que l'ID du Gadget commence par 1
; car le message renvoie null s'il n'est pas au dessus un Gadget
; de plus si le gadget est désactivée, il ne sera pas détecté

Declare  Callback(WindowID, message, wParam, lParam)


Enumeration
	#window
	;#String          ;ID=1
	#Button         ;ID=2
	#CheckBox    ;ID=3
	#String
EndEnumeration

If OpenWindow(#window,0,0,400,400,"Pure Basic",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
	CreateGadgetList(WindowID(#window))
	StringGadget(#String,20, 20,200,20,"Normal StringGadget...")
	ButtonGadget(#Button, 20, 60, 200, 20, "Standard Button")
	CheckBoxGadget(#CheckBox,20, 100,200,20,"CheckBox standard")
	
	;DisableGadget(#Button,1)
	
	SetWindowCallback(@Callback())
	
	Repeat
		EventID.l=WaitWindowEvent()
		Select EventID
			
			Case #PB_Event_Gadget
			Select EventGadget()
				Case 0
				
			EndSelect
			
			Case #WM_CLOSE
			Quit=1
		EndSelect
	Until Quit=1
EndIf  


Procedure Callback(WindowID, message, wParam, lParam)
	Resultat = #PB_ProcessPureBasicEvents
	Select message
		Case #WM_SETCURSOR
		Debug "Handle= "+Str(wParam)+"   , "+"ID= "+Str(GetDlgCtrlID_(wParam))
		
	EndSelect
	ProcedureReturn Resultat
EndProcedure

; EPB

Re: Evenement passage souris sur gadget

Publié : mer. 13/nov./2013 11:35
par Mesa

Code : Tout sélectionner

Enumeration
  #Windows
  
  #ImageGadget1

EndEnumeration
;Macro de je ne sais plus qui
Macro OverGadget(x, y, Gadget)
   (((Not x<GadgetX(Gadget)) & (Not y<GadgetY(Gadget))) & (Not x>=(GadgetX(Gadget)+GadgetWidth(Gadget))) & (Not y>=(GadgetY(Gadget)+GadgetHeight(gadget))))
EndMacro
;
If CreateImage(0, 100, 100)
    If StartDrawing(ImageOutput(0))
       Box(0,0,100,100, RGB(0,255,0)) 
      StopDrawing()
    EndIf
  EndIf

If CreateImage(1, 100, 100)
    If StartDrawing(ImageOutput(1))
       Box(0,0,100,100, RGB(255,0,0)) 
      StopDrawing()
    EndIf
  EndIf

If OpenWindow(#Windows, 0, 0, 200, 200, "Survoler", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
   
    ImageGadget(#ImageGadget1,50,50,100,100,ImageID(0))                      
   
   
   Repeat
      
        Event = WaitWindowEvent()
        x=WindowMouseX(#Windows):y=WindowMouseY(#Windows)
     
      If OverGadget(x,y , #ImageGadget1)
        Debug "Ok"
        SetGadgetState(#ImageGadget1,ImageID(1))

      EndIf
      
            
   Until Event = #PB_Event_CloseWindow
EndIf
M.

Re: Evenement passage souris sur gadget

Publié : mer. 13/nov./2013 13:40
par Ar-S
Dobro tu devrais te faire un programme pour supprimer les

Code : Tout sélectionner

CreateGadgetList(WindowID(#window))
de tes nombreux codes.