If you specify the ID of the create gadget, an error occurs
Code: Select all
wg::Create(2,30,30,100,100)
Code: Select all
wg::Create(-1,30,30,100,100)
Code: Select all
DeclareModule wg
Declare Create(Gadget, X,Y,Width,Height, Title$="", Flag=0, Parent=-1)
EndDeclareModule
Module wg
Structure WindowStruct
Parent.i
Gadget.i
EndStructure
Procedure ParentCallBack()
Static OffsetX, OffsetY
Protected Gadget = EventGadget()
Protected *wg.WindowStruct = GetGadgetData(Gadget)
With *wg
Select EventType()
Case #PB_EventType_MouseMove
Debug GetGadgetAttribute(Gadget, #PB_Canvas_MouseX)
EndSelect
EndWith
EndProcedure
Procedure CallBack()
Protected Gadget = EventGadget()
Protected *wg.WindowStruct = GetGadgetData(Gadget)
; PostEvent(#PB_Event_Gadget, EventWindow(), *wg\Parent, EventType()) ; good uncomment to see
; PostEvent(#PB_Event_Gadget, EventWindow(), *wg\Parent, EventType(), *wg) ; good uncomment to see
PostEvent(#PB_Event_Gadget, EventWindow(), *wg\Parent, EventType(), Gadget ) ; Bug? uncomment to see
EndProcedure
Procedure Create(Gadget, X,Y,Width,Height, Title$="", Flag=0, Parent=-1)
Protected *wg.WindowStruct = AllocateStructure(WindowStruct)
With *wg
\Parent = CanvasGadget(#PB_Any, x,y, Width,Height)
\Gadget = CanvasGadget(Gadget, x+Width+10,y, Width,Height )
If IsGadget(Gadget) : \Gadget = Gadget : EndIf
SetGadgetData(\Parent, *wg)
SetGadgetData(\Gadget, *wg)
BindGadgetEvent(\Parent, @ParentCallBack())
BindGadgetEvent(\Gadget, @CallBack(), #PB_EventType_MouseMove)
ProcedureReturn \Gadget
EndWith
EndProcedure
EndModule
;- Example
CompilerIf #PB_Compiler_IsMainFile
Enumeration
#Window
EndEnumeration
Procedure OpenWindow_0()
OpenWindow(#Window, 0, 0, 600, 400, "WindowTitle",
#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
wg::Create(2,30,30,100,100)
EndProcedure
OpenWindow_0()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
CompilerEndIf