Code: Select all
Procedure CanvasColorCallBack()
Protected Gadget = EventGadget()
If IsGadget(Gadget) And StartDrawing (CanvasOutput (Gadget))
;Box(0, 0, OutputWidth(), OutputHeight(), GetGadgetData(Gadget))
Box(0, 0, GadgetWidth (Gadget), GadgetHeight (Gadget), GetGadgetData(Gadget))
StopDrawing()
EndIf
EndProcedure
Procedure SetCanvasColor(Gadget, ColorType, Color)
If ColorType = #PB_Gadget_BackColor And IsGadget(Gadget) And GadgetType(Gadget) = #PB_GadgetType_Canvas
SetGadgetData(Gadget, Color)
PostEvent(#PB_Event_Gadget, GetActiveWindow(), Gadget, #PB_EventType_Resize)
BindGadgetEvent(Gadget, @CanvasColorCallBack(), #PB_EventType_Resize)
Else
SetGadgetColor(Gadget, ColorType, Color)
EndIf
EndProcedure
Macro SetGadgetColor(Gadget, ColorType, Color) : SetCanvasColor(Gadget, ColorType, Color) : EndMacro
OpenWindow (0, 0, 0, 300, 400, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget (1, 0, 0, 0, 0)
CanvasGadget (2, 0, 0, 0, 0)
SplitterGadget (0, 1, 1, 300, 400, 1, 2)
SetGadgetColor(1, #PB_Gadget_BackColor, #Red)
SetGadgetColor(2, #PB_Gadget_BackColor, #Green)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Code: Select all
Enumeration #PB_EventType_FirstCustomValue
#PB_EventType_Size
EndEnumeration
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
Procedure Size_CallBack(hWnd, Msg, wParam, lParam)
Protected *Func =GetProp_( hWnd, "PB_Size_CallBack")
If msg = #WM_SIZE
PostEvent(#PB_Event_Gadget, GetProp_( GetAncestor_( hWnd, #GA_ROOT ), "PB_WindowID")-1, GetProp_( hWnd, "PB_ID") , #PB_EventType_Size)
EndIf
ProcedureReturn CallWindowProc_(*Func, hWnd, Msg, wParam, lParam)
EndProcedure
CompilerEndSelect
Procedure SetSizeEvent( Gadget )
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
SetProp_( GadgetID(Gadget), "PB_Size_CallBack",SetWindowLong_(GadgetID(Gadget), #GWL_WNDPROC, @Size_CallBack()))
CompilerEndSelect
EndProcedure
Procedure CanvasColorCallBack()
Protected Gadget = EventGadget()
If IsGadget(Gadget) And StartDrawing (CanvasOutput (Gadget))
;Box(0, 0, OutputWidth(), OutputHeight(), GetGadgetData(Gadget))
Box(0, 0, GadgetWidth (Gadget), GadgetHeight (Gadget), GetGadgetData(Gadget))
StopDrawing()
EndIf
EndProcedure
Procedure SetCanvasColor(Gadget, ColorType, Color)
If ColorType = #PB_Gadget_BackColor And IsGadget(Gadget) And GadgetType(Gadget) = #PB_GadgetType_Canvas
SetSizeEvent( Gadget )
SetGadgetData(Gadget, Color)
PostEvent(#PB_Event_Gadget, GetActiveWindow(), Gadget, #PB_EventType_Size)
BindGadgetEvent(Gadget, @CanvasColorCallBack(), #PB_EventType_Size)
Else
SetGadgetColor(Gadget, ColorType, Color)
EndIf
EndProcedure
Macro SetGadgetColor(Gadget, ColorType, Color) : SetCanvasColor(Gadget, ColorType, Color) : EndMacro
OpenWindow (0, 0, 0, 300, 400, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget (1, 0, 0, 0, 0)
CanvasGadget (2, 0, 0, 0, 0)
SplitterGadget (0, 1, 1, 300, 400, 1, 2)
SetGadgetColor(1, #PB_Gadget_BackColor, #Red)
SetGadgetColor(2, #PB_Gadget_BackColor, #Green)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow