Here's an updated version. All you do is:
Import "About.bmx"
CreateAboutWindow(MainWindow:TGadget)
Create a menu like this:
GADGET_MENU_ABOUT=CreateMenu("About",0,menu)
The code will automate everything else for you, including activating the last active window and hiding/showing the about window.
Import "About.bmx"
CreateAboutWindow(MainWindow:TGadget)
Create a menu like this:
GADGET_MENU_ABOUT=CreateMenu("About",0,menu)
The code will automate everything else for you, including activating the last active window and hiding/showing the about window.
Strict Import brl.maxgui Private Global GADGET_ABOUT_WINDOW:TGadget Global GADGET_ABOUT_OK:TGadget Global GADGET_ABOUT_CANCEL:TGadget Global GADGET_ABOUT_ACTIVE:TGadget Public Global GADGET_MENU_ABOUT:TGadget Function CreateAboutWindow(text$,group:TGadget) Local w,h,x,y,flags Local panel:TGadget flags=WINDOW_TITLEBAR|WINDOW_HIDDEN'|WINDOW_DIALOG w=284 h=192 GADGET_ABOUT_WINDOW:TGadget=CreateWindow("About",(GadgetWidth(group)-w)/2,(GadgetHeight(group)-h)/2,w,h,group,flags) x=8 y=4 panel:TGadget=CreatePanel(x,y,GADGET_ABOUT_WINDOW.ClientWidth()-2*x,GADGET_ABOUT_WINDOW.ClientHeight()-y-8-23-8,GADGET_ABOUT_WINDOW,PANEL_GROUP) CreateLabel(text$,panel.ClientWidth()/2-60,panel.ClientHeight()/2-32,panel.ClientWidth(),panel.ClientHeight(),panel) w=80 h=23 GADGET_ABOUT_OK=CreateButton("OK",(GADGET_ABOUT_WINDOW.ClientWidth()-w)/2,GADGET_ABOUT_WINDOW.ClientHeight()-h-8,w,h,GADGET_ABOUT_WINDOW,BUTTON_OK) GADGET_ABOUT_CANCEL=CreateButton("",GADGET_ABOUT_WINDOW.ClientWidth(),0,0,0,GADGET_ABOUT_WINDOW,BUTTON_CANCEL) AddHook EmitEventHook,AboutWindowHook EndFunction Private Function ShowAboutWindow() Local gadget:TGadget GADGET_ABOUT_ACTIVE=ActiveGadget() ShowGadget GADGET_ABOUT_WINDOW ActivateGadget GADGET_ABOUT_OK DisableGadget GadgetGroup(GADGET_ABOUT_WINDOW) For gadget=EachIn GadgetGroup(GADGET_ABOUT_WINDOW).kids If gadget<>GADGET_ABOUT_WINDOW DisableGadget gadget EndIf Next EndFunction Function AboutWindowHook:Object(id:Int,data:Object,context:Object) If data=Null Return Null Local event:TEvent=TEvent(data) Select event.id Case EVENT_GADGETACTION Select event.source Case GADGET_ABOUT_OK,GADGET_ABOUT_CANCEL EmitEvent CreateEvent(EVENT_WINDOWCLOSE,GADGET_ABOUT_WINDOW) Return Null EndSelect Case EVENT_MENUACTION Select event.source Case GADGET_MENU_ABOUT ShowAboutWindow Return Null EndSelect Case EVENT_WINDOWCLOSE Select event.source Case GADGET_ABOUT_WINDOW Local gadget:TGadget For gadget=EachIn GadgetGroup(GADGET_ABOUT_WINDOW).kids If gadget<>GADGET_ABOUT_WINDOW EnableGadget gadget EndIf Next EnableGadget GadgetGroup(GADGET_ABOUT_WINDOW) ActivateGadget GADGET_ABOUT_ACTIVE HideGadget GADGET_ABOUT_WINDOW Return Null EndSelect EndSelect Return data EndFunction Public