使用代码如下:
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;
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;这样写无需处理系统命令消息。
HMENU hMenu = GetSystemMenu(hMainWnd, FALSE);
// 初始化miInfo的各成员
InsertMenuItem(hMenu, ID_ABOUT, FALSE, &miInfo);
可以跟zdg预订,只要有人发问题,就给你发email或ICQ,这样你就来得及了。:)
这样做的一个好处是带来更多的网友(因为更方便了),不好的地方可能是给服务器带来负担,不知各位大虾以为如何?
因为他们回答问题很积极,我们正在讨论,不知道大家认为如何。