Seite 1 von 1

Splittergadget und seine Events

Verfasst: 22.10.2004 19:13
von nicolaus
Da ich gerade selber das prob hatte mit den Events des Splittergadgets und daraufhin auch mal im englsichen Forum geschaut habe obs ne lösung gibt habe ich das hier gefunden:

Code: Alles auswählen

;Original bye "tinman" 

Global hSplitterGadget.l 
Global old_func.l 

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

Procedure.l foo(WindowID, Message, wParam, lParam) 
    Static state 
    
    result.l = CallWindowProc_(old_func, WindowID, Message, wParam, lParam) 
    Select Message 
        Case #WM_LBUTTONDOWN 
            state = 1 
            Debug "pressed" 
            
        Case #WM_MOUSEMOVE 
            If state = 1 
                Debug "resizing" 
            EndIf 
            
        Case #WM_LBUTTONUP 
            state = 0 
            Debug "released" 
    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 = GadgetID(#Splitter) 

      old_func.l = GetWindowLong_(hSplitterGadget, #GWL_WNDPROC) 
      If old_func = 0 
        old_func = GetClassLong_(hSplitterGadget, #GCL_WNDPROC) 
      EndIf 
      SetWindowLong_(hSplitterGadget, #GWL_WNDPROC, @foo()) 


      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 ) 

      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 
  
  SetWindowLong_(hSplitterGadget, #GWL_WNDPROC, old_func) 
End
Hoffe das es euch mal so viel hilft wie mir :D

MfG Nico

Re: Splittergadget und seine Events

Verfasst: 28.01.2010 23:22
von hjbremer
lang ist es her, aber hat mir geholfen

mit etwas umbauen, kann ich nun das verschieben unterbinden, da ich ein Splittergadget im Splittergadget habe :allright: