Lock SplitterGadget
Posted: Tue Aug 10, 2004 9:56 am
Code updated For 5.20+
lock splitter bar position
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