程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 在CB中響應消息及自定義消息

在CB中響應消息及自定義消息

編輯:vc教程

在 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:\Program Files\Borland\CBuilder\inlucde\vcl\Messages.hpp;其它的消息響應方法與此相同。

另外,可以為自定義的消息也定義一個對應的消息結構(如:TSearchNode_Message),至於如何定義消息結構, 可以參考 Borland 的源代碼:C:\Program Files\Borland\CBuilder\inlucde\vcl\Messages.hpp

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved