imagegadget peut etre un bug

Archive.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

imagegadget peut etre un bug

Message par Backup »

voila j'ai fait une fenetre toute simple
avec une image gadget dedans !

lorsqu'on clique sur l'image un requester s'affiche , cliquez sur le requester

puis sans cliquer remettez la souris sur l'imagegadget

le requester reviens !!! comme si l'on avait cliqué!! 8O

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #image_0
EndEnumeration

;- Image Plugins

;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
IncludeBinary "C:\WINDOWS\Bulles de savon.bmp"
EndDataSection

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 10, 230, 342, 263, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#image_0, 40, 30, 90, 100, Image0)
      
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #image_0
      MessageRequester("test","test",#PB_MessageRequester_Ok)
    EndIf
    
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
;
ou en d'autre termes comment vider les evenements gadget ?
ou ne filtrer que l'evenement interressant .....
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

oui j'ai remarquer ce phenomene il y a un moment deja donc pour resoudre ce probleme je fais comme ceux-ci:

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #image_0
EndEnumeration

;- Image Plugins

;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
IncludeBinary "C:\WINDOWS\Bulles de savon.bmp"
EndDataSection

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 10, 230, 342, 263, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#image_0, 40, 30, 90, 100, Image0)
     
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat ; Start of the event loop
 
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
 
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
 
  GadgetID = EventGadget() ; Is it a gadget event?
 
  EventType = EventType() ; The event type
 
  ;You can place code here, and use the result as parameters for the procedures
 
  If Event = #PB_Event_Gadget
   
    If GadgetID = #image_0
     CreateGadgetList(WindowID(#Window_0)); <-------------------je rajoute sa
      ImageGadget(#image_0, 40, 30, 90, 100, Image0);<-------------------je rajoute sa
      MessageRequester("test","test",#PB_MessageRequester_Ok)
    EndIf
   
  EndIf
 
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
;

Code : Tout sélectionner

    If GadgetID = #image_0
     CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#image_0, 40, 30, 90, 100, Image0)
      MessageRequester("test","test",#PB_MessageRequester_Ok)
    EndIf
voila :wink:



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

A mon avis l’erreur vient tout simplement de ça :
Quand tu cliques sur le gadget : T’as le message avant de relâcher le clique.
Donc la procédure cliquer n’a pas totalement eu lieu.
Car un vrai clique c’est cliquer puis relâcher.
Et quand tu remet la souris sur le Gadget le relâchement à enfin eu lieu ce qui agie comme un deuxième clique.
:idea:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Mytic a écrit :A mon avis l’erreur vient tout simplement de ça :
Quand tu cliques sur le gadget : T’as le message avant de relâcher le clique.
Donc la procédure cliquer n’a pas totalement eu lieu.
Car un vrai clique c’est cliquer puis relâcher.
Et quand tu remet la souris sur le Gadget le relâchement à enfin eu lieu ce qui agie comme un deuxième clique.
:idea:
ben oui , mais je n,e pense pas que ce soit ça !! :)

je pense plutot que l'evenement gadget de survol de la souris est declenché !!
vu que #PB_EventType_DragStart est possible avec une image :)

@venom : Merci pour l'info :D

et je voulais te dire qu'apparement seule

Code : Tout sélectionner

    ImageGadget(#image_0, 40, 30, 90, 100, Image0); <---------- couper l'evenement gadget
suffit :D
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

ok merci pour l'info Dobro :wink: .


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre