Evènements sur un SplitterGadget

Partagez votre expérience de PureBasic avec les autres utilisateurs.
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Evènements sur un SplitterGadget

Message par fweil »

Lorsque l'on essaye de récupérer les évènements sur un SplitterGadget, on a qq difficultés.

J'ai finalement découvert que le handle du gadget retourné à sa création n'est pas celui qui permet de le gérer dans un callback (ou même dans le programme principal.

En fait le bon handle est le handle parent du handle donné par la création du gadget (en fait un splitter est une association d'éléments fenétrés enfants, ce qui doit produire cette difficulté).

Voici donc un petit code qui permet de comprendre ....

Code : Tout sélectionner

Global hSplitterGadget.l 

#Button1  = 0 
#Button2  = 1 
#Splitter = 2 

Procedure MyWindowCallback(WindowID, Message, wParam, lParam) 
  Result = #PB_ProcessPureBasicEvents 
  Select Message 
    Case #WM_MOUSEACTIVATE 
      If wParam = hSplitterGadget 
          Debug "Splitter touched" 
      EndIf 
  EndSelect 
  ProcedureReturn Result 
EndProcedure 


  If OpenWindow(0, 0, 0, 230, 180, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "SplitterGadget") 
    If CreateGadgetList(WindowID(0)) 
      hButtonGadget1 = ButtonGadget(#Button1,0, 0, 0, 0, "Button 1") ; No need to specify size or coordiantes 
      hButtonGadget2 = ButtonGadget(#Button2,0, 0, 0, 0, "Button 2") ; as they will be sized automatically 
      hSplitterGadget = SplitterGadget(#Splitter, 5, 5, 220, 120, #Button1, #Button2, #PB_Splitter_Separator) 
      hSplitterGadget = GetParent_(hSplitterGadget) 
      SetGadgetAttribute(#Splitter, #PB_Splitter_FirstMinimumSize, 20) 
      SetGadgetAttribute(#Splitter, #PB_Splitter_SecondMinimumSize, 20) 
      hTextGadget = TextGadget(3, 10, 135, 210, 40, "Above GUI part shows two automatically resizing buttons inside the 230x130 SplitterGadget area.",#PB_Text_Center ) 
      SetWindowCallback(@MyWindowCallback()) 
      Repeat 
        ev = WaitWindowEvent() 
        Select ev 
            Case #PB_Event_CloseWindow : quit =1 
            Case #PB_Event_Gadget 
              EventGadgetID = EventGadgetID() 
              Debug "Gadget# = " + Str(EventGadgetID) + " Gadget handle = " + Str(GadgetID(EventGadgetID)) 
        EndSelect 
      Until quit=1 
    EndIf 
  EndIf 
End 
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.