操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

C++Builder如何响应消息及自定义消息

2003-10-22 网友评论 0 条 点击进入论坛

Inprise(Borland) C++Builder中,可以象在Delphi中一样响应消息,只是看起来要稍复杂一点。

对于系统已定义的消息,可以直接响应:

#define WM_MY_OPEN_CMDLINE_FILE (WM_USER+1) file://进程间通讯的自定义消息
#define WM_MY_SEARCH_NODE (WM_USER+2) file://查找命令的自定义消息

class TSomeForm : public Tform
{
file://...类中的其它代码
protected:
file://消息的响应过程
void __fastcall OpenCmdLineFile(Tmessage Message);
void __fastcall SearchDocumentNode(Tmessage Message);
void __fastcall GetWindowMinMaxInfo(TWMGetMinMaxInfo Message);

file://以下通过宏定义实现消息的正确响应
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MY_OPEN_CMDLINE_FILE, Tmessage, OpenCmdLineFile)
MESSAGE_HANDLER(WM_MY_SEARCH_NODE, Tmessage, SearchDocumentNode)
MESSAGE_HANDLER(WM_GETMINMAXINFO , TWMGetMinMaxInfo, GetWindowMinMaxIn
fo)
END_MESSAGE_MAP(Tform)

};//end class

file://以下为实现代码
void __fastcall TSomeForm::OpenCmdLineFile(Tmessage Message)
{//直接通过消息结构传递参数
LPSTR lpCmdLine=(LPSTR)Message.Lparam;//从Message中取得参数
this->HandleCmdLineFile(lpCmdLine);//处理命令行的参数
return;
}

void __fastcall TSomeForm::SearchDocumentNode(Tmessage Message)
{//响应查找消息
file://Message中的参数在此处不需要。
this->SearchNode();
return;
}

void __fastcall TSomeForm::GetWindowMinMaxInfo(TWMGetMinMaxInfo Messag
e)
{//设置主窗口的最小尺寸
MINMAXINFO *MinMaxInfo=Message.MinMaxInfo;
MinMaxInfo->ptMinTrackSize.x=400;
MinMaxInfo->ptMinTrackSize.y=300;
return;
}

其中:Tmessage和TWMGetMinMaxInfo类型的定义可参见:

C:\\Program Files\Borland\CBuilder\inlucde\vcl\Messages.hpp;其它的消息 响应方法与此相同。

另外,可以为自定义的消息也定义一个对应的消息结构(如:TSearchNode_Mes sage),至于如何定义消息结构, 可以参考:
C:\\Program Files\Borland\CBuilder\inlucde\vcl\Messages.hpp

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 用户名: 密码:
  匿名发表
今日推荐
技术文库(共有 45972 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
移动开发
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail