使用代码如下:
const idSysAbout=100; procedure Tform1.FormCreate(Sender:Tobject); var i:integer; begin AppendMenu(GetSystemMenu(Handle,False),MF_SEPARATOR,0, ' '); AppendMenu(GetsystemMenu(Handle,False),MF_STRING,idSysAbout, '&About... '); end; end; 然后定义一个消息处理函数: public procedure WMSyscommand(var msg:TMessage); message WM_SYSCOMMAND; procedure TForm1.WMSyscommand(var msg:TMessage)l begin if msg.cmdtype=idsysAbout then {你的的ABOUT命令要做的事} inherited; end;
------------------------------------------------------------------------ 另外补充一种方法,
在你的窗口里放一个MAINMENU控件,建立其结构,并写出相应的处理事件,然后把窗口的MENU属性置空,使菜单清除。 然后使用下面的代码来建立更复杂的系统菜单: procedure Tform1.FormCreate(Sender:Tobject); var i:integer; begin AppendMenu(GetSystemMenu(Handle,False),MF_SEPARATOR,0, ' '); with mainmenu1 do //假设你的菜单名是这样 for i:=0 to Items.count-1 do appendMenu(Getsystemmenu(self.handle,False),MF_POPUP, Items[i].handle,Pchar(Items[i].caption)); end end; 这样写无需处理系统命令消息。 |
|