如何改变系统菜单

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

从前现在过去便再不来

红红落叶长埋尘土内

开始终结总是没变改

天边的你飘泊白云外

苦海翻起爱恨

在世间难逃离命运

相亲竟不可接近

或我应该相信是缘分

情人别后永远再不来

无言独坐放眼尘世外

鲜花虽会凋谢但会再开

一生所爱隐约在白云外 ————《大话西游》

C++Builder虽然和Delphi用的是同一个VCL库,但C++Builder中对自定义消息的声明和处理却和Delphi的不一样。

首先,要在相应的头文件里添加如下代码:

#include <vcl\Messages.hpp> //要用到的头文件

#define CM_MyMsg (WM_USER+400) //CM_MyMsg为自定义的消息

void __fastcall WMSysCommand(TWMSysCommand &Message);

//在头文件中定义相应消息的处理函数

BEGIN_MESSAGE_MAP

MESSAGE_HANDLER(WM_SYSCOMMAND, TWMSysCommand, WMSysCommand)

END_MESSAGE_MAP(TForm) //用自定义的消息处理函数来代替原消息处理函数

然后在相应的文件中加入:

void __fastcall TForm1::WMSysCommand(TWMSysCommand &Message)

{

switch(Message.CmdType)

{

case CM_YouMessage: ... //添加你自已的代码

break;

default:

TForm::Dispatch(&Message); //用它来处理其它消息

}

}

//这是窗体的新建过程

void __fastcall TForm1::FormCreate(TObject *Sender)

{

HMENU SysHMenu;

SysHMenu=GetSystemMenu(Handle,false);

AppendMenu(SysHMenu,MF_STRING,CM_MyMsg,"你好");

}

--------------------------------------------------------------------------------

Delphi

在Delphi中就比C++ Builder简单多了:

首先,在TForm类的Pravite中加入这句用于覆盖缺省的消息处理

procedure WMSysCommand(var message:TMessage) ; message WM_SYSCOMMAND;

在常量定义中加入这句用于定义自定义消息

CM_MyMsg = WM_USER + 400;

在Form的OnCreate事件中为系统菜单添加新的菜单项

procedure TForm1.FormCreate(Sender: TObject);

var

SysHMenu : HMENU;

begin

SysHMenu:=GetSystemMenu(Handle,False);

AppendMenu(SysHMenu,MF_STRING,CM_MyMsg,'你好');

end;

消息处理函数

procedure TForm1.WMSysCommand(var message:TMessage);

begin

case message.WParam of

CM_MyMsg: Application.MessageBox('你好','',MB_OK);

else

inherited;

end;

end;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航