C++Builder如何響應消息及自定義消息

博客介绍了Inprise(Borland)C++Builder中消息响应的方法,可像Delphi一样响应消息但稍复杂。对于系统已定消息可直接响应,还给出了示例代码,同时提到可参考特定文件定义消息结构,其他消息响应方法与此相同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Inprise(Borland) C++Builder中,可以像在Delphi中一樣響應消息,只是看起來要稍複雜一點。

  對於系統已定義的消息,可以直接響應:

#define WM_MY_OPEN_CMDLINE_FILE (WM_USER+1) //進程間通訊的自定義消息
#define WM_MY_SEARCH_NODE (WM_USER+2) //查找命令的自定義消息

class TSomeForm : public TForm
{
//...類中的其它代碼
protected:
//消息的響應過程
void __fastcall OpenCmdLineFile(TMessage Message);
void __fastcall SearchDocumentNode(TMessage Message);
void __fastcall GetWindowMinMaxInfo(TWMGetMinMaxInfo Message);

//以下通過宏定義實現消息的正確響應
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, GetWindowMinMaxInfo)
END_MESSAGE_MAP(TForm)

};//end class

//以下為實現代碼
void __fastcall TSomeForm::OpenCmdLineFile(TMessage Message)
{//直接通過消息結構傳遞參數
LPSTR lpCmdLine=(LPSTR)Message.LParam;//從Message中取得參數
this->HandleCmdLineFile(lpCmdLine);//處理命令行的參數
return;
}

void __fastcall TSomeForm::SearchDocumentNode(TMessage Message)
{//響應查找消息
//Message中的參數在此處不需要。
this->SearchNode();
return;
}

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

  其中:TMessage和TWMGetMinMaxInfo類型的定義可參見:C:/ProgramFiles/Borland/CBuilder/inlucde/vcl/Messages.hpp;其它的消息響應方法與此相同。

  另外,可以為自定義的消息也定義一個對應的消息結構(如:TSearchNode_Message),至於如何定義消息結構, 可以參考:C:/Program Files/Borland/CBuilder/inlucde/vcl/Messages.hpp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值