Evenement passage souris sur gadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Evenement passage souris sur gadget

Message 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
Win7 (x64) 64 bits Pb 5.72
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Evenement passage souris sur gadget

Message 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
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Evenement passage souris sur gadget

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Evenement passage souris sur gadget

Message par Ar-S »

Dobro tu devrais te faire un programme pour supprimer les

Code : Tout sélectionner

CreateGadgetList(WindowID(#window))
de tes nombreux codes.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre