[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]
{
SCOTT SAMET
> I have a program that is always an icon, but I want to add an "about"
> command to it, to display a dialog box with info on the author and
> the program. Anyone know how to do this or where info on it can be found?
All system menu commands, even those you add, are returned as wm_SysCommand
messages. You need to check wParam to see if it's one of yours, and if not,
pass it to DefWndProc.
}
Uses
OWindows, WinProcs, WinTypes;
Const
cm_About = 100;
Type
TMyApp = Object(TApplication)
Procedure InitMainWindow; Virtual;
end;
PMyWin = ^TMyWin;
TMyWin = Object(TWindow)
Procedure SetupWindow; Virtual;
Procedure wmSysCommand(Var Msg : TMessage);
virtual wm_First + wm_SysCommand;
Procedure wmQueryOpen(Var Msg : TMessage);
virtual wm_First + wm_QueryOpen;
end;
Procedure TMyApp.InitMainWindow;
Begin
MainWindow := New(PMyWin, Init (Nil, 'Test Window'));
{ This gives the window a system menu with Move, Switch and Close }
PWindow(MainWindow)^.Attr.Style := ws_Overlapped or ws_Sysmenu;
end;
Procedure TMyWin.SetupWindow;
Var
SysMenu: hMenu;
Begin
SysMenu := GetSystemMenu(hWindow, False);
AppendMenu(SysMenu, mf_Separator, 0, Nil);
AppendMenu(SysMenu, mf_String, cm_About, '&About');
end;
Procedure TMyWin.wmQueryOpen(Var Msg : TMessage);
Begin
{ This keeps the window an icon at all times }
Msg.Result := 0;
end;
Procedure TMyWin.wmSysCommand(Var Msg : TMessage);
Begin
Case Msg.wParam of
cm_About :
MessageBox(hWindow, 'About Text', 'About Box', mb_ok)
Else
DefWndProc (Msg);
end;
end;
Var
App: TMyApp;
Begin
CmdShow := sw_ShowMinimized;
App.Init ('Test');
App.Run;
App.Done;
end.
[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]