荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: Second (石开), 信区: Program
标 题: 如何改变系统菜单 c++builder
发信站: 荔园晨风BBS站 (Wed Jun 6 07:02:11 2001), 转信
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;
--
既然热爱生命
那么,
一切都在意料之中。
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店