C++Builder如何响应消息及自定义消息
C++Builder如何響應(yīng)消息及自定義消息
?
Inprise(Borland) C++Builder中,可以象在Delphi中一樣響應(yīng)消息,只是看起來要稍
復(fù)雜一點(diǎn)。
?
對(duì)于系統(tǒng)已定義的消息,可以直接響應(yīng):
?
#define WM_MY_OPEN_CMDLINE_FILE (WM_USER+1) //進(jìn)程間通訊的自定義消息
#define WM_MY_SEARCH_NODE (WM_USER+2) //查找命令的自定義消息
?
class TSomeForm : public TForm
{
//...類中的其它代碼
protected:
//消息的響應(yīng)過程
void __fastcall OpenCmdLineFile(TMessage Message);
void __fastcall SearchDocumentNode(TMessage Message);
void __fastcall GetWindowMinMaxInfo(TWMGetMinMaxInfo Message);
?
//以下通過宏定義實(shí)現(xiàn)消息的正確響應(yīng)
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
?
//以下為實(shí)現(xiàn)代碼
void __fastcall TSomeForm::OpenCmdLineFile(TMessage Message)
{//直接通過消息結(jié)構(gòu)傳遞參數(shù)
LPSTR lpCmdLine=(LPSTR)Message.LParam;//從Message中取得參數(shù)
this->HandleCmdLineFile(lpCmdLine);//處理命令行的參數(shù)
return;
}
?
void __fastcall TSomeForm::SearchDocumentNode(TMessage Message)
{//響應(yīng)查找消息
//Message中的參數(shù)在此處不需要。
this->SearchNode();
return;
}
?
void __fastcall TSomeForm::GetWindowMinMaxInfo(TWMGetMinMaxInfo Message)
{//設(shè)置主窗口的最小尺寸
MINMAXINFO *MinMaxInfo=Message.MinMaxInfo;
MinMaxInfo->ptMinTrackSize.x=400;
MinMaxInfo->ptMinTrackSize.y=300;
return;
}
?
其中:TMessage和TWMGetMinMaxInfo類型的定義可參見:C:
\ProgramFiles\Borland\CBuilder\inlucde\vcl\Messages.hpp;其它的消息響應(yīng)方法與此
相同。
?
另外,可以為自定義的消息也定義一個(gè)對(duì)應(yīng)的消息結(jié)構(gòu)(如:TSearchNode_Message),
至于如何定義消息結(jié)構(gòu), 可以參考:C:\Program
Files\Borland\CBuilder\inlucde\vcl\Messages.hpp
總結(jié)
以上是生活随笔為你收集整理的C++Builder如何响应消息及自定义消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Builder 5编HOOK程序
- 下一篇: C++喜欢收录和反链都保持增长的态势