Maybe something like this:
Code: Select all
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
Structure HelpWindowStructure
ParentWindow.i
HelpGadgdet.i
EndStructure
Procedure SizeHelpWindow()
Protected HelpWindow.i, *HelpWindow.HelpWindowStructure
HelpWindow = EventWindow()
*HelpWindow = GetWindowData(HelpWindow)
If *HelpWindow
ResizeGadget(*HelpWindow\HelpGadgdet, 0, 0, WindowWidth(HelpWindow), WindowHeight(HelpWindow))
EndIf
EndProcedure
Procedure CloseHelpWindow()
Protected EventWindow.i, *HelpWindow.HelpWindowStructure
EventWindow = EventWindow()
*HelpWindow = GetWindowData(EventWindow)
CloseWindow(EventWindow)
If *HelpWindow
SetActiveWindow(*HelpWindow\ParentWindow)
FreeStructure(*HelpWindow)
EndIf
EndProcedure
Procedure ShowHelpWindow(Url$, ParentWindow.i=0)
Protected.i HelpWindow, *HelpWindow.HelpWindowStructure
If ParentWindow = 0
ParentWindow = GetActiveWindow()
EndIf
HelpWindow = OpenWindow(#PB_Any, 0, 0, 800, 600, GetFilePart(ProgramFilename(), #PB_FileSystem_NoExtension) + " Help", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_WindowCentered, WindowID(ParentWindow))
If HelpWindow
*HelpWindow = AllocateStructure(HelpWindowStructure)
If *HelpWindow
*HelpWindow\ParentWindow = ParentWindow
*HelpWindow\HelpGadgdet = WebGadget(#PB_Any, 0, 0, 800, 600, Url$)
SetWindowData(HelpWindow, *HelpWindow)
BindEvent(#PB_Event_SizeWindow, @SizeHelpWindow(), HelpWindow)
BindEvent(#PB_Event_CloseWindow, @CloseHelpWindow(), HelpWindow)
Else
CloseWindow(HelpWindow)
SetActiveWindow(ParentWindow)
EndIf
EndIf
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
Define.i Event
OpenWindow(0, 0, 0, 900, 500, "Test", #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
ButtonGadget(0, 10, 10, 100, 30, "Help")
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
ShowHelpWindow("https://www.purebasic.com/documentation")
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
CompilerEndIf