Page 1 sur 1

Identifié un clic sur une ImageGadget

Publié : jeu. 16/juin/2005 8:36
par olivier
Sous windows 98, lorsque je clique sur une ImageGadget, pure me renvoie l'ID du gadget que je peux ensuite gérée. Mais sous 2000, cette ID n'est plus renvoyer ??? Lorsque je clique sur une ImageGadget il ne se passe rien .

Comment peux t'on savoir sur quelle image on à cliquer ?
(Autrement que par la position de la souris)

Merci d'avance

Publié : jeu. 16/juin/2005 16:53
par bernard13
deja
peux tu donner un bout de code
pour essayer de 'taider

Publié : jeu. 16/juin/2005 17:17
par nico
C'est pas normal, donne un code de test!

Publié : jeu. 16/juin/2005 19:25
par olivier
Un bout de code.... j'ai essayer de faire simple

Code : Tout sélectionner

OpenWindow(1,10,10,400,400, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "ess")
CreateGadgetList(WindowID())    
    
ImageGadget(7, 5, 5, 200, 200, 0, #PB_Image_Border)
    
    
    
Quit=0  
    
Repeat
    
    If EventWindowID()=1
        Evenement =WaitWindowEvent()
        Debug Evenement
        
        Select Evenement
            
            Case #PB_EventGadget; *****************Choix d'un bouton
                gadget=EventGadgetID()
                Debug gadget
                
            Case #WM_CLOSE ; ***************************#PB_EventCloseWindow
                Quit=1
                
        EndSelect
    EndIf
    
        
    Until Quit=1

Sur win98 le debuger nous sort une serie de 512 et lorsque l'on clique sur l'image, 13100 et 7 qui correspond à l'id de l'image.
Sous win2000 j'ai juste une serie de 512 et lorsque je clique 513 et 514 correspondant au clique...

Sa vous la coupe........ou j'ai fait une c.....ie
:?

Publié : jeu. 16/juin/2005 19:57
par nico
Essayes ça pour voir:

Code : Tout sélectionner

#STN_CLICKED=0

Procedure WindowCallback(WindowID, Message, wParam, lParam)
  Resultat = #PB_ProcessPureBasicEvents
  Select Message 
    Case #WM_COMMAND
      Select wParam >>16
        Case #STN_CLICKED
          Debug "ImageGadget-callback"
      EndSelect
  EndSelect       
  ProcedureReturn Resultat
EndProcedure
  

OpenWindow(1,10,10,400,400, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "ess") 
SetWindowCallback(@WindowCallback())
CreateGadgetList(WindowID())    
    
ImageGadget(7, 5, 5, 200, 200, 0, #PB_Image_Border) 
     
Quit=0  
    
Repeat 
  If EventWindowID()=1 
    Evenement =WaitWindowEvent() 
    ;Debug Evenement 
    Select Evenement  
      Case #PB_EventGadget; *****************Choix d'un bouton 
        Select EventType()
          Case #PB_EventType_LeftClick 
            Select EventGadgetID() 
              Case 7
                Debug "ImageGadget"
            EndSelect 
        EndSelect 
        
      Case #WM_CLOSE ; ***************************#PB_EventCloseWindow 
        Quit=1 
        
    EndSelect 
  EndIf  
Until Quit=1 

Publié : jeu. 16/juin/2005 21:14
par olivier
Ben sa fait la même chose ?????? :?

Publié : jeu. 16/juin/2005 21:25
par olivier
Je viens de réessayer mon code sur un autre PC mais toujours sous win98 et je ne récupère pas non plus l'ID ????

Pouvez vous essayez et me dire si le debug affiche 13000 et 7 si vous cliquer sur l'image. (donner votre OS)

Merci d'avance.

Publié : jeu. 16/juin/2005 23:36
par Torp
Sous XP :

Quand je clique ---> 13100 puis 7
Quand je relache -> 514

...

Publié : ven. 17/juin/2005 5:52
par Anonyme2
Sous XP, même résultat que Torp

Ton code doit être modifié, EventWindowID() se place après un WaitWindowEvent() car c'est bien lorsque l'on a intercepté un événement que l'on regarde sur quelle fenêtre il a eu lieu et de quel type il s'agit, sinon on va perdre certains événements (voir la doc de PB)

Publié : ven. 17/juin/2005 18:15
par olivier
Bon je le change de place mais cela ne change rien, sous 2000, ou peut être cela vient d'autre part ????

Code : Tout sélectionner

OpenWindow(1,10,10,400,400, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "ess")
CreateGadgetList(WindowID())   
   
ImageGadget(7, 5, 5, 200, 200, 0, #PB_Image_Border)
   
   
   
Quit=0 
   
Repeat
    
    
    Evenement =WaitWindowEvent()
    Debug Evenement
    If EventWindowID()=1  
        Select Evenement
            
            Case #PB_EventGadget; *****************Choix d'un bouton
                gadget=EventGadgetID()
                Debug gadget
                
            Case #WM_CLOSE ; ***************************#PB_EventCloseWindow
                Quit=1
                
        EndSelect
    EndIf
    
    
Until Quit=1
Quelqu'un pourrais essayer sur win2000, j'y comprend rien ????

Publié : ven. 17/juin/2005 18:57
par Anonyme2
Il ya eu souvent des problèmes avec Win2000, peut-être un bug