分享

定制系统菜单

 离魂异客 2012-08-21
使用代码如下:
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;

这样写无需处理系统命令消息。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多