Lock SplitterGadget

Share your advanced PureBasic knowledge/code with the community.
User avatar
eddy
Addict
Addict
Posts: 1479
Joined: Mon May 26, 2003 3:07 pm
Location: Nantes

Lock SplitterGadget

Post 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

Imagewin10 x64 5.72 | IDE | PB plugin | Tools | Sprite | JSON | visual tool
Xombie
Addict
Addict
Posts: 898
Joined: Thu Jul 01, 2004 2:51 am
Location: Tacoma, WA
Contact:

Post 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
Post Reply