I am posting my solution here in case anybody else needs to do this.
Code: Select all
EnableExplicit
Enumeration
#MainWindow
#StatusBar
#EditorGadget
#TrackBarGadget
EndEnumeration
Global StatusRect.RECT, hEdit, hStatus
Global Maxrange, MaxD, sliderValue
Global EventID
Procedure MakeStatusBar()
Protected hStatus
hStatus = CreateStatusBar(#StatusBar, WindowID(#MainWindow))
AddStatusBarField(90)
AddStatusBarField(100)
AddStatusBarField(200)
AddStatusBarField(#PB_Ignore) ; automatically resize this field
StatusBarText(#StatusBar, 0, "First bar field")
StatusBarText(#StatusBar, 1, "Second bar field")
ProcedureReturn hStatus
EndProcedure
Procedure SizeWindowHandler()
Protected statusHeight
Shared hStatus
statusHeight= StatusBarHeight(#StatusBar)
SendMessage_(hStatus, #SB_GETRECT, 2, StatusRect) ;2 refs the third panel in the statusbar
ResizeGadget(#TrackBarGadget, #PB_Ignore, WindowHeight(#MainWindow)-StatusBarHeight(#StatusBar)+5, #PB_Ignore, #PB_Ignore)
ResizeGadget(#EditorGadget, #PB_Ignore, #PB_Ignore, WindowWidth(#MainWindow), WindowHeight(#MainWindow)-StatusBarHeight(#StatusBar))
FreeStatusBar(#StatusBar)
hStatus = MakeStatusBar()
EndProcedure
OpenWindow(#MainWindow, 100, 200, 600, 400, "Gadget on status bar", #PB_Window_MinimizeGadget| #PB_Window_SizeGadget |#PB_Window_SizeGadget)
Maxrange=400
MaxD=Maxrange/64 +1
TrackBarGadget(#TrackBarGadget, 197, WindowHeight(#MainWindow)-20, 195, 20, 1, Maxrange )
hStatus = MakeStatusBar()
hEdit=EditorGadget(#EditorGadget,1,0,WindowWidth(#MainWindow), WindowHeight(#MainWindow)-StatusBarHeight(#StatusBar))
SetGadgetText(#EditorGadget, "Use the slider to resize the text!")
BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #TrackBarGadget
sliderValue=GetGadgetState(#TrackBarGadget)
If SendMessage_(hEdit,#EM_SETZOOM,sliderValue,MaxD) = #False
Debug "Error, Cannot set new zooming Range"
EndIf
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow