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

📄 chap6_2.htm

📁 着重介绍基于C++的web编程技术
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_DBLCLK</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">用户在控件上双击鼠标左键.</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_RCLICK</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">用户在控件上单击鼠标右键.</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_RDBLCLK</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">用户在控件上双击鼠标右键.</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_RETURN</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">用户在控件上按回车键.</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_SETFOCUS</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">控件获得输入焦点.</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_KILLFOCUS</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">控件失去输入焦点.</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_OUTOFMEMORY</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">内存不够.</font></td>
      </tr>
    </table>
    <p><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>
    <p ALIGN="JUSTIFY">WM_NOTIFY</font><font SIZE="3">的消息映射由宏</font><font FACE="Times New Roman" SIZE="3">ON_NOTIFY</font><font SIZE="3">负责,该消息映射宏具有如下形式:</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">ON_NOTIFY( wNotifyCode, id, memberFxn )</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">参数</font><font FACE="Times New Roman" SIZE="3">wNotifyCode</font><font SIZE="3">说明了通知消息码,参数</font><font FACE="Times New Roman" SIZE="3">id</font><font SIZE="3">是控件的</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">,第三个参数则是消息处理函数名.消息处理函数应该按下面的形式声明,其中参数</font><font FACE="Times New Roman" SIZE="3">pNotifyStruct</font><font SIZE="3">指向</font><font FACE="Times New Roman" SIZE="3">NMHDR</font><font SIZE="3">及其扩充结构,参数</font><font FACE="Times New Roman" SIZE="3">result</font><font SIZE="3">指向一个处理结果.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">利用</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">可以很方便地加入</font><font FACE="Times New Roman" SIZE="3">WM_NOTIFY</font><font SIZE="3">消息映射及其处理函数,一个典型的</font><font FACE="Times New Roman" SIZE="3">WM_NOTIFY</font><font SIZE="3">消息映射如下所示,其中</font><font FACE="Times New Roman" SIZE="3">LVN_KEYDOWN</font><font SIZE="3">是</font><font FACE="Times New Roman" SIZE="3">IDC_LIST1</font><font SIZE="3">列表视图控件发出的通知消息.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">消息处理函数</font><font FACE="Times New Roman" SIZE="3">OnKeydownList1</font><font SIZE="3">的定义如下面所示.在函数中</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">自动把</font><font FACE="Times New Roman" SIZE="3">pNHHDR</font><font SIZE="3">指针强制转换成</font><font FACE="Times New Roman" SIZE="3">LV_KEYDOWN</font><font SIZE="3">型并赋给</font><font FACE="Times New Roman" SIZE="3">pLVKeyDow</font><font SIZE="3">指针,这样,在函数中可通过这两个指针访问</font><font FACE="Times New Roman" SIZE="3">LV_KEYDOWN</font><font SIZE="3">扩充结构及其所含的</font><font FACE="Times New Roman" SIZE="3">NMHDR</font><font SIZE="3">结构.另外,在函数返回时,</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">自动将处理结果赋</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">值.</p>
    <blockquote>
      </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">void 
      CMyDlg::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult)</p>
      <p ALIGN="JUSTIFY">{</p>
      <p ALIGN="JUSTIFY">LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;</p>
      <p ALIGN="JUSTIFY">// TODO: Add your control notification handler</p>
      <p ALIGN="JUSTIFY">// code here</p>
      <p ALIGN="JUSTIFY">*pResult = 0;</p>
      <p ALIGN="JUSTIFY">}</p>
    </blockquote>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">可以利用</font><font FACE="Times New Roman" SIZE="3">ON_NOTIFY_RANGE</font><font SIZE="3">宏把多个</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">连续的控件发出的相同消息映射到同一个处理函数上,具体形式如下,其中参数</font><font FACE="Times New Roman" SIZE="3">id</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">idLast</font><font SIZE="3">分别说明明了一组连续的控件</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">中的头一个和最后一个</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">ON_NOTIFY_RANGE( wNotifyCode, id, idLast, memberFxn )</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">相应的消息处理函数应按下面的形式声明,与普通的</font><font FACE="Times New Roman" SIZE="3">WM_NOTIFY</font><font SIZE="3">消息处理函数相比,该函数多了一个参数</font><font FACE="Times New Roman" SIZE="3">id</font><font SIZE="3">用来说明发送通知消息的控件</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">afx_msg void memberFxn( UINT id, NMHDR * pNotifyStruct, LRESULT * 
    result );</p>
    <p ALIGN="JUSTIFY">ClassWizard</font><font SIZE="3">不支持</font><font FACE="Times New Roman" SIZE="3">ON_NOTIFY_RANGE</font><font SIZE="3">宏,所以需要手工建立消息映射和消息处理函数.</font><font FACE="Times New Roman" SIZE="3"></p>
    <b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">6.2.2 
    </font><font SIZE="3" color="#3973DE">旋转按钮控件</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">旋转按钮</font><font FACE="Times New Roman" SIZE="3">(Spin Button)</font><font SIZE="3">有时也被称为上下控件</font><font FACE="Times New Roman" SIZE="3">(Up-Down Control)</font><font SIZE="3">.</font><font FACE="Times New Roman" SIZE="3">Windows 95</font><font SIZE="3">控制面板中的日期</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">时间程序中就有两个典型的旋转按钮,如图</font><font FACE="Times New Roman" SIZE="3">6.2</font><font SIZE="3">所示.旋转按钮由两个箭头按钮组成,用户在箭头按钮上单击鼠标可以在某一范围内增加或减少某一个值.旋转按钮一般不会单独存在,而是和编辑框或静态正文组成一个多部件控件来共同显示和控制某一个值,用户可以用旋转按钮修改编辑框中的数字,也可以直接在编辑框中修改.例如,在图</font><font FACE="Times New Roman" SIZE="3">6.2</font><font SIZE="3">中,在旋转按钮的左测有一个编辑框,用户可以在编辑框中直接输入新的年份,也可以用旋转按钮来增减编辑框中的年份.通常,把与旋转按钮在一块的编辑框或静态正文称为"伙伴"</font><font FACE="Times New Roman" SIZE="3">(buddy)</font><font SIZE="3">.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><img src="T6_2.gif" alt="T6_2.tif (164162 bytes)" WIDTH="462" HEIGHT="333"><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">6.2 
    </font><font SIZE="3">日期</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">时间程序中的旋转按钮</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">MFC</font><font SIZE="3">的</font><font FACE="Times New Roman" SIZE="3">CSpinButtonCtrl</font><font SIZE="3">类封装了旋转按钮的功能.</font><font FACE="Times New Roman" SIZE="3">CSpinButtonCtrl</font><font SIZE="3">的成员函数</font><font FACE="Times New Roman" SIZE="3">Create</font><font SIZE="3">负责创建控件,该函数的声明为</p>
    <blockquote>
      <blockquote>
        <blockquote>
          </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">BOOL Create( DWORD 
          dwStyle, const RECT&amp; rect, CWnd* pParentWnd, UINT nID );</font></p>
        </blockquote>
      </blockquote>
    </blockquote>
    <p><font SIZE="3"> </p>
    <p ALIGN="JUSTIFY">参数</font><font FACE="Times New Roman" SIZE="3">dwStyle</font><font SIZE="3">是如表</font><font FACE="Times New Roman" SIZE="3">6.23</font><font SIZE="3">所示的各种控件风格的组合.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
    <p ALIGN="CENTER">表</font><font FACE="Times New Roman" SIZE="3">6.23 </font><font SIZE="3">旋转按钮控件的风格</font></b></p>
    <table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
      <tr>
        <td WIDTH="36%"><font SIZE="3"><b><p ALIGN="JUSTIFY">控件风格</b></font></td>
        <td WIDTH="64%"><font SIZE="3"><b><p ALIGN="JUSTIFY">含义</b></font></td>
      </tr>
      <tr>
        <td WIDTH="36%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UDS_HORZ</font></td>
        <td WIDTH="64%"><font SIZE="3"><p ALIGN="JUSTIFY">指定一个水平旋转按钮.若不指定该风格则创建一个垂直的旋转按钮.</font></td>
      </tr>
      <tr>
        <td WIDTH="36%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UDS_WRAP</font></td>
        <td WIDTH="64%"><font SIZE="3"><p ALIGN="JUSTIFY">当旋转按钮增大到超过最大值时,自动重置为最小值,当减小至低于最小值时,自动重置为最大值.</font></td>
      </tr>
      <tr>
        <td WIDTH="36%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UDS_ARROWKEYS</font></td>
        <td WIDTH="64%"><font SIZE="3"><p ALIGN="JUSTIFY">当用户按下向下或向上箭头键时,旋转按钮值递增或递减.</font></td>
      </tr>
      <tr>
        <td WIDTH="36%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UDS_SETBUDDYINT</font></td>
        <td WIDTH="64%"><font SIZE="3"><p ALIGN="JUSTIFY">旋转按钮将自动更新伙伴控件中显示的数值,如果伙伴控件能接受输入,则可在伙伴控件中输入新的旋转按钮值.</font></td>
      </tr>
      <tr>
        <td WIDTH="36%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UDS_NOTHOUSANDS</font></td>
        <td WIDTH="64%"><font SIZE="3"><p ALIGN="JUSTIFY">伙伴控件中显示的数值每隔三位没有千位分隔符.</font></td>
      </tr>
      <tr>
        <td WIDTH="36%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UDS_AUTOBUDDY</font></td>
        <td WIDTH="64%"><font SIZE="3"><p ALIGN="JUSTIFY">自动使旋转按钮拥有一个伙伴控件.</font></td>
      </tr>
      <tr>
        <td WIDTH="36%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UDS_ALIGNRIGHT</font></td>
        <td WIDTH="64%"><font SIZE="3"><p ALIGN="JUSTIFY">旋转按钮在伙伴控件的右侧.</font></td>
      </tr>

⌨️ 快捷键说明

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