龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

在CB中响应消息及自定义消息

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
在 Borland C++Builder 中,也可以象在 Delphi 中一样响应消息,只是看起来要稍复杂一点。对于系统已定义的消息,可以直接响应,而对于非系统消息可以照如下自定义: //以下代码写在头文

  在 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 FilesBorlandCBuilderinlUCdevclMessages.hpp;其它的消息响应方法与此相同。

  另外,可以为自定义的消息也定义一个对应的消息结构(如:TSearchNode_Message),至于如何定义消息结构, 可以参考 Borland 的源代码:C:Program FilesBorlandCBuilderinlucdevclMessages.hpp

  

精彩图集

赞助商链接