Page 1 of 1

Lock SplitterGadget

Posted: Tue Aug 10, 2004 9:56 am
by eddy
Code updated For 5.20+

lock splitter bar position

Code: Select all

Global SplitterCB

; ================
; splitter CallBack
; ================
Procedure SplitterCallBack(Window, Message, wParam, lParam)     
  Select Message
    Case #WM_LBUTTONUP
      SetCursor_(LoadCursor_(0,#IDC_ARROW))
      ReturnValue = 1
    Case #WM_LBUTTONDOWN
      SetCursor_(LoadCursor_(0,#IDC_ARROW))
      ReturnValue = 1
    Case #WM_MOUSEMOVE
      SetCursor_(LoadCursor_(0,#IDC_ARROW))
      ReturnValue = 1
    Default
      ReturnValue = CallWindowProc_(SplitterCB, Window, Message, wParam, lParam)
  EndSelect     
  ProcedureReturn ReturnValue
EndProcedure

; ================
; splitter locker
; ================
Procedure LockSplitter(splitter)
  SplitterCB = SetWindowLong_(splitter, #GWL_WNDPROC, @SplitterCallBack())
EndProcedure

; ================
; example
; ================
#FRAME1=1
#FRAME2=2
#SPLITTER=3
OpenWindow(0,100,100,300,300,"locked splitter",#PB_Window_SystemMenu)

FrameGadget(#FRAME1,0,0,0,0,"left")
FrameGadget(#FRAME2,0,0,0,0,"right")
splitter=SplitterGadget(#SPLITTER,0,0,300,300,#FRAME1,#FRAME2,#PB_Splitter_Separator|#PB_Splitter_Vertical)
LockSplitter(splitter)

Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow


Posted: Sun Jul 24, 2005 1:52 am
by Xombie
Thanks for this, Eddy!

I was banging my head against some code and then finally saw yours. Saved me a lot of trouble! :D