发信人: love1974() 
整理人: wenbobo(2002-12-06 23:15:33), 站内信件
 | 
 
 
C++Builder如何响应消息及自定义消息 
    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, GetWindowMinMaxIn fo)
 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 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\Me ssages.hpp 
  -- love1974[灌水版(还未开盘)斑竹] 灌翻网易,一大快事
 太太平平,不是我活着的目标;不温不火,不是我的性格。是云就该下雨,是火就该发光。
 那罐星砂送給你
 ╭╯  ╰╮╭╯╰╮    願你心想事成
 ║▃▃▃║║☆★║  這罐海水留給我
  ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.124]
  | 
 
 
 |