⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lc_bcb_95.html

📁 C++Builder教学大全
💻 HTML
字号:


<HTML>

<HEAD>

<TITLE>C++Builder程序设计</TITLE>

<META content="text/html; charset=gb2312" http-equiv=Content-Type>

<META content="Microsoft FrontPage 4.0" name=GENERATOR></HEAD>

<BODY>

<TABLE  border=0 width="100%">

  <TBODY>

  <TR>

    <TD>

      <div align="center">

        <p><BR>

          <FONT color=#000000>在 C++Builder 中,如何响应消息及自定义消息 [messages] ?</FONT></p> 

        <p><FONT color=#000000>王俊蛟<BR> 

          </FONT> </p> 

      </div> 

      <HR noShade SIZE=1 width="100%"> 

       

      <P>在 Borland C++Builder 中,也可以象在 Delphi  

      中一样响应消息,只是看起来要稍复杂一点。<BR>对于系统已定义的消息,可以直接响应,而对于非系统消息可以照如下自定义: 

      <P>//以下代码写在头文件中:<BR>#define WM_MY_OPEN_CMDLINE_FILE (WM_USER+1)  

      //进程间通讯的自定义消息<BR>#define WM_MY_SEARCH_NODE (WM_USER+2)  

      //查找命令的自定义消息<BR>class TSomeForm : public TForm<BR>{//某窗体的类定义<BR> 

      <DIR>//...类中的其它代码<BR>protected:<BR>&nbsp;//消息的响应过程<BR>&nbsp;void  

      __fastcall OpenCmdLineFile(TMessage Message);<BR>&nbsp;void __fastcall  

      SearchDocumentNode(TMessage Message);<BR>&nbsp;void __fastcall  

      GetWindowMinMaxInfo(TWMGetMinMaxInfo  

      Message);<BR>&nbsp;//通过以下宏定义实现消息的正确响应<BR>&nbsp;BEGIN_MESSAGE_MAP<BR>&nbsp;MESSAGE_HANDLER(WM_MY_OPEN_CMDLINE_FILE,  

      TMessage, OpenCmdLineFile)<BR>&nbsp;MESSAGE_HANDLER(WM_MY_SEARCH_NODE,  

      TMessage, SearchDocumentNode)<BR>&nbsp;MESSAGE_HANDLER(WM_GETMINMAXINFO ,  

      TWMGetMinMaxInfo,  

      GetWindowMinMaxInfo)<BR>&nbsp;END_MESSAGE_MAP(TForm)<BR></DIR>};//end  

      class<BR> 

      <HR noShade SIZE=1 width="100%"> 

      //以下为实现代码,写在模块文件中:<BR>void __fastcall TSomeForm::OpenCmdLineFile(TMessage  

      Message)<BR>{//直接通过消息结构传递参数  

      <DIR>LPSTR  

      lpCmdLine=(LPSTR)Message.LParam;//从Message中取得参数<BR>this-&gt;HandleCmdLineFile(lpCmdLine);//处理命令行的参数<BR>return;  

      </DIR>}<BR> 

      <HR noShade SIZE=1 width="100%"> 

      void __fastcall TSomeForm::SearchDocumentNode(TMessage  

      Message)<BR>{//响应查找消息<BR> 

      <DIR>//Message中的参数在此处不需要。<BR>this-&gt;SearchNode();<BR>return;<BR></DIR>}<BR> 

      <HR noShade SIZE=1 width="100%"> 

      void __fastcall TSomeForm::GetWindowMinMaxInfo(TWMGetMinMaxInfo  

      Message)<BR>{//设置主窗口的最小尺寸<BR> 

      <DIR>MINMAXINFO  

      *MinMaxInfo=Message.MinMaxInfo;<BR>MinMaxInfo-&gt;ptMinTrackSize.x=400;<BR>MinMaxInfo-&gt;ptMinTrackSize.y=300;<BR>return;<BR></DIR>}<BR> 

      <HR noShade SIZE=1 width="100%"> 

      其中:TMessage和TWMGetMinMaxInfo类型的定义可参见:C:\Program  

      Files\Borland\CBuilder\inlucde\vcl\Messages.hpp;其它的消息响应方法与此相同。<BR>另外,可以为自定义的消息也定义一个对应的消息结构(如:TSearchNode_Message),至于如何定义消息结构,  

      可以参考 Borland 的源代码:C:\Program  

      Files\Borland\CBuilder\inlucde\vcl\Messages.hpp 

      <FONT color=#008000><BR></FONT> 

      <P></P></TD></TR> 

  </TBODY></TABLE> 

<P>&nbsp;</P></BODY></HTML> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -