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

📄 chap2_4.htm

📁 着重介绍基于C++的web编程技术
💻 HTM
📖 第 1 页 / 共 5 页
字号:
    </table>
    <p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">为了说明如何使用用户自定义消息,我们看一个例子,见程序清单</font><font FACE="Times New Roman" SIZE="3">2.4</font><font SIZE="3"><font SIZE="3">:</font><b><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">清单</font></font><font FACE="Times New Roman" SIZE="3">2.4 </font><font SIZE="3">使用用户自定义消息</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p>#include&lt;afxwin.h&gt;</p>
    <p>#define CM_APPLE (WM_USER+0)</p>
    <p>#define CM_ORANGE (WM_USER+1)</p>
    <p>class CMainFrame:CFrameWnd{</p>
    <p>public:</p>
    <p>CMainFrame();</p>
    <p>protected:</p>
    <p>afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);</p>
    <p>afx_msg void OnClose();</p>
    <p>//handle user select apple</p>
    <p>afx_msg LRESULT CMApple(WPARAM wParam, LPARAM lParam);</p>
    <p>//handle user select orange</p>
    <p>afx_msg LRESULT CMOrange(WPARAM wParam, LPARAM lParam);</p>
    <p>DECLARE_MESSAGE_MAP()</p>
    <p>};</p>
    <p></font><font SIZE="3">相应的消息映射如下:</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)</p>
    <p>ON_WM_CREATE()</p>
    <p>ON_MESSAGE(CM_APPLE, CMApple)</p>
    <p>ON_MESSAGE(CM_ORANGE,CMOrange)</p>
    <p>ON_WM_CLOSE()</p>
    <p>END_MESSAGE_MAP()</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">第一个</font><font FACE="Times New Roman" SIZE="3">ON_MESSAGE</font><font SIZE="3">宏用于指定 </font><font FACE="Times New Roman" SIZE="3">CM_APPLE </font><font SIZE="3">命令消息的处理成员函数为</font><font FACE="Times New Roman" SIZE="3">CMApple </font><font SIZE="3">,而第二个</font><font FACE="Times New Roman" SIZE="3">ON_MESSAGE</font><font SIZE="3">宏用于指定</font><font FACE="Times New Roman" SIZE="3">CM_ORANGE</font><font SIZE="3">命令消息的处理函数为</font><font FACE="Times New Roman" SIZE="3">CMOrange</font><font SIZE="3"><font SIZE="3">。</font><b><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">消息的发送</font></b></font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">Windows</font><font SIZE="3">应用程序允许应用程序向自己发送消息、向其他应用程序发送消息,甚至可以向</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">操作系统本身发送消息(比如要求关闭操作系统或重新启动操作系统)。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">提供了三个</font><font FACE="Times New Roman" SIZE="3">API</font><font SIZE="3">函数用于发送消息,这三个函数是:</font><font FACE="Times New Roman" SIZE="3">SendMessage</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">PostMessage</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">SendDlgItemMessage</font><font SIZE="3">。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>SendMessage</font><font SIZE="3">用于向窗口发送消息,该函数说明如下:</font><font FACE="Times New Roman" SIZE="3"></p>
    <blockquote>
      <p>LRESULT SendMessage(</p>
    </blockquote>
    <p>HWND hWnd, //</font><font SIZE="3">消息要发往的窗口的句柄</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>UINT Msg, //</font><font SIZE="3">要发送的消息</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>WPARAM wParam, //</font><font SIZE="3">消息的第一个参数</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>LPARAM lParam //</font><font SIZE="3">消息的第二个参数</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>);</p>
    <p></font><font SIZE="3">其中,</font><font FACE="Times New Roman" SIZE="3">hWnd</font><font SIZE="3">为接收消息窗口的句柄,参数</font><font FACE="Times New Roman" SIZE="3">Msg</font><font SIZE="3">指定发送的消息,参数</font><font FACE="Times New Roman" SIZE="3">wParam</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">lParam</font><font SIZE="3">依赖于消息</font><font FACE="Times New Roman" SIZE="3">Msg</font><font SIZE="3">。该函数调用目标窗口的窗口函数,直到目标窗口处理完该消息才返回。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">PostMessage</font><font SIZE="3">函数同</font><font FACE="Times New Roman" SIZE="3">SendMessage</font><font SIZE="3">类似,它把消息放在指定窗口创建的线程的消息队列中,然后不等消息处理完就返回,而不象</font><font FACE="Times New Roman" SIZE="3">SendMessage</font><font SIZE="3">那样必须等到消息处理完毕才返回。目标窗口通过</font><font FACE="Times New Roman" SIZE="3">GetMessage</font><font SIZE="3">或</font><font FACE="Times New Roman" SIZE="3">PeekMessage</font><font SIZE="3">从消息队列中取出并处理。</font><font FACE="Times New Roman" SIZE="3">PostMessage</font><font SIZE="3">函数说明如下:</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <blockquote>
      <p>BOOL PostMessage(</p>
    </blockquote>
    <p>HWND hWnd, //</font><font SIZE="3">消息发往的窗口</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>UINT Ms<i>g</i>, //</font><font SIZE="3">要发送的消息</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>WPARAM wParam, //</font><font SIZE="3">消息的第一个参数</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>LPARAM lParam //</font><font SIZE="3">消息的第二个参数</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>);</p>
    <p></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">其中,参数</font><font FACE="Times New Roman" SIZE="3">hWnd</font><font SIZE="3">为接收消息的窗口的句柄,参数</font><font FACE="Times New Roman" SIZE="3">Msg</font><font SIZE="3">指定所发送的消息,参数</font><font FACE="Times New Roman" SIZE="3">wParam</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">lParam</font><font SIZE="3">依赖于消息</font><font FACE="Times New Roman" SIZE="3">Msg</font><font SIZE="3">。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>SendDlgItemMessage</font><font SIZE="3">函数用于向对话框的某个控制发送消息,函数声明如下:</font><font FACE="Times New Roman" SIZE="3"></p>
    <blockquote>
      <b><p></b>LONG SendDlgItemMessage(</p>
    </blockquote>
    <p>HWND hDlg, //</font><font SIZE="3">对话框句柄</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>int nIDDlgItem, //</font><font SIZE="3">对话框控件的</font><font FACE="Times New Roman" SIZE="3">ID</p>
    <p>UINT Msg, //</font><font SIZE="3">要发送的消息</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>WPARAM wParam, //</font><font SIZE="3">消息的第一个参数</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>LPARAM lParam //</font><font SIZE="3">消息的第二个参数</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>); </p>
    <p></font><font SIZE="3">其中,</font><font FACE="Times New Roman" SIZE="3">hDlg</font><font SIZE="3">为包含目标控制的对话框的窗口句柄,参数</font><font FACE="Times New Roman" SIZE="3">nIDDlgItem</font><font SIZE="3">为接收消息的对话框控制的整数标识符,参数</font><font FACE="Times New Roman" SIZE="3">Msg</font><font SIZE="3">指定了所发送的消息,参数</font><font FACE="Times New Roman" SIZE="3">wParam</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">lParam</font><font SIZE="3">提供附加的特定消息的信息。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>MFC</font><font SIZE="3">将这三个函数封装为</font><font FACE="Times New Roman" SIZE="3">CWnd</font><font SIZE="3"><font SIZE="3">类的成员函数,隐藏了窗口句柄和对话框句柄。这三个成员函数用于向本窗口发送消息,函数的说明如下:</font><font FACE="Times New Roman" SIZE="3"></p>
    <blockquote>
      <blockquote>
        </font><font FACE="Arial" SIZE="2"><b><p></b></font>LRESULT SendMessage( UINT message, 
        WPARAM wParam = 0, LPARAM lParam = 0 );</p>
        <font FACE="Arial" SIZE="2"><b><p></b></font>BOOL PostMessage( UINT message, WPARAM wParam 
        = 0, LPARAM lParam = 0 );</p>
        <p>LRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wParam = 0, LPARAM lParam = 0 
        );</p>
      </blockquote>
    </blockquote>
    <b><p></b></font><font color="#3973DE" SIZE="3">2.4.5</font><font color="#3973DE"><font SIZE="3"><font SIZE="3">学习</font></font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">的方法</font></font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">首先要

⌨️ 快捷键说明

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