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

📄 chap4_2.htm

📁 MFC开发基础教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    <p>pCmdUI-&gt;Enable(m_bWorking) ;</b></p>
    <p>}</p>
    <p></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>m_bWorking</font><font SIZE="3">的初值应是</font><font FACE="Times New Roman" SIZE="3">FALSE</font><font SIZE="3">,对它的初始化工作在</font><font FACE="Times New Roman" SIZE="3">CMainFrame</font><font SIZE="3">的构造函数中完成。</font><font FACE="Times New Roman" SIZE="3">m_bWorking</font><font SIZE="3">的值在处理</font><font FACE="Times New Roman" SIZE="3">Start</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">Stop</font><font SIZE="3">命令时会被更新以反映当前的状态。两个命令更新处理函数都调用了</font><font FACE="Times New Roman" SIZE="3">CCmdUI::Enable</font><font SIZE="3">,该函数根据</font><font FACE="Times New Roman" SIZE="3">m_bWorking</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">Record</font><font SIZE="3">,现在</font><font FACE="Times New Roman" SIZE="3">Start</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">Stop</font><font SIZE="3">命令的逻辑功能已经实现了。</font><b><font FACE="Times New Roman" SIZE="3"></p>
    <p>4.2.3</font><font SIZE="3">按钮风格</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">在</font><font FACE="Times New Roman" SIZE="3">Record</font><font SIZE="3">程序中,用户可以选择两种采样频率来录音。用户接口对象应该能反映出当前的采样频率。普通的工具条按钮在按下后会立刻弹起来,我们希望</font><font FACE="Times New Roman" SIZE="3">Record</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">CCmdUI::SetCheck</font><font SIZE="3">函数来实现这一功能,在命令更新函数中调用</font><font FACE="Times New Roman" SIZE="3">CCmdUI::SetCheck(TRUE)</font><font SIZE="3">或</font><font FACE="Times New Roman" SIZE="3">CCmdUI::SetCheck(FALSE)</font><font SIZE="3">可将用户接口对象设定为选中或不选中状态,当一个用户接口对象被选中时,相应的工具按钮会处于按下的状态,并且相应的菜单项的前面会加上一个选中标记。这里需要给</font><font FACE="Times New Roman" SIZE="3">CMainFrame</font><font SIZE="3">类加一个布尔型成员变量以表明当前的采样频率。请读者在</font><font FACE="Times New Roman" SIZE="3">CMainFrame</font><font SIZE="3">类内加入下面一行代码:</font><font FACE="Times New Roman" SIZE="3"><b></p>
    <p>BOOL m_bHighQuality;</b></p>
    <p></font><font SIZE="3">接下来请读者按清单</font><font FACE="Times New Roman" SIZE="3">4.4</font><font SIZE="3">进行修改。<b></p>
    <p>清单</font><font FACE="Times New Roman" SIZE="3">4.4 </b></p>
    <p>CMainFrame::CMainFrame()</p>
    <p>{</p>
    <p>// TODO: add member initialization code here</p>
    <p>m_bWorking=FALSE; </p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>m_bHighQuality=TRUE;</b></p>
    <p>}</p>
    <p>void CMainFrame::OnHighQuality() </p>
    <p>{</p>
    <p>// TODO: Add your command handler code here</p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>m_bHighQuality=TRUE; </b></p>
    <p>}</p>
    <p>void CMainFrame::OnLowQuality() </p>
    <p>{</p>
    <p>// TODO: Add your command handler code here</p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>m_bHighQuality=FALSE; </b></p>
    <p>}</p>
    <p>void CMainFrame::OnUpdateHighQuality(CCmdUI* pCmdUI) </p>
    <p>{</p>
    <p>// TODO: Add your command update UI handler code here</p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>pCmdUI-&gt;SetCheck(m_bHighQuality); </b></p>
    <p>}</p>
    <p>void CMainFrame::OnUpdateLowQuality(CCmdUI* pCmdUI) </p>
    <p>{</p>
    <p>// TODO: Add your command update UI handler code here</p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>pCmdUI-&gt;SetCheck(!m_bHighQuality); </b></p>
    <p>}</p>
    <p></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>m_bHighQuality</font><font SIZE="3">的初值是</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">,即缺省时是高频采样,对它的初始化工作在</font><font FACE="Times New Roman" SIZE="3">CMainFrame</font><font SIZE="3">的构造函数中完成。</font><font FACE="Times New Roman" SIZE="3">m_bHighQuality</font><font SIZE="3">的值在处理</font><font FACE="Times New Roman" SIZE="3">High quality</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">Low quality</font><font SIZE="3">命令时会被更新以反映当前的状态。两个命令更新处理函数都调用了</font><font FACE="Times New Roman" SIZE="3">CCmdUI::SetCheck</font><font SIZE="3">,该函数根据</font><font FACE="Times New Roman" SIZE="3">m_bHighQuality</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">Record</font><font SIZE="3">,读者可以看到具有新风格的工具条按钮。当选择采样频率时,相应的菜单项前会出现一个选中标记,相应的工具条按钮会被按下。</font><b><font FACE="Times New Roman" SIZE="3"></p>
    <p>4.2.4</font><font SIZE="3">工具条的隐藏</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">显示</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">读者可能已经试过了</font><font FACE="Times New Roman" SIZE="3">Record</font><font SIZE="3">程序的</font><font FACE="Times New Roman" SIZE="3">View</font><font SIZE="3">菜单的功能。通过该菜单用户可以隐藏</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">显示工具条和状态栏,这个功能是由</font><font FACE="Times New Roman" SIZE="3">AppWizard</font><font SIZE="3">自动实现的。由于第二个工具条是手工建立的,因此它不会自动具备<b>隐藏</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">显示功能。</b>但我们可以通过编程来实现第二个工具条的隐藏</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">显示:</p>
    <blockquote>
      <blockquote>
        <p>打开</font><font FACE="Times New Roman" SIZE="3">IDR_MAINFRAME</font><font SIZE="3">菜单资源</p>
        <p>在</font><font FACE="Times New Roman" SIZE="3">View</font><font SIZE="3">菜单中加入一个名为</font><font FACE="Times New Roman" SIZE="3">Toolbar1</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_VIEW_TOOLBAR1,</font><font SIZE="3">并在</font><font FACE="Times New Roman" SIZE="3">Prompt</font><font SIZE="3">栏中输入</font><font FACE="Times New Roman" SIZE="3">Show or hide the toolbar1\nToggle ToolBar1</font><font SIZE="3">。</p>
        <p ALIGN="JUSTIFY">按</font><font FACE="Times New Roman" SIZE="3">Ctrl+W</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">Class name</font><font SIZE="3">栏中选择</font><font FACE="Times New Roman" SIZE="3">CMainFrame</font><font SIZE="3">,在</font><font FACE="Times New Roman" SIZE="3">Object IDs</font><font SIZE="3">栏中选择</font><font FACE="Times New Roman" SIZE="3">ID_VIEW_TOOLBAR1</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">OnViewToolbar1</font><font SIZE="3">和命令更新处理函数</font><font FACE="Times New Roman" SIZE="3">OnUpdateViewToolbar1</font><font SIZE="3">。</p>
        <p>按清单</font><font FACE="Times New Roman" SIZE="3">4.5</font><font SIZE="3">修改程序。</p>
        </font>
      </blockquote>
    </blockquote>
    <p><b><font SIZE="3"> </p>
    <p>清单</font><font FACE="Times New Roman" SIZE="3">4.5 </font><font SIZE="3">显示</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">隐藏工具条</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p>void CMainFrame::OnViewToolbar1() </p>
    <p>{</p>
    <p>// TODO: Add your command handler code here</p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>m_wndToolBar1.ShowWindow(m_wndToolBar1.IsWindowVisible()?</p>
    <p>SW_HIDE:SW_SHOW); </p>
    <p>RecalcLayout();</b></p>
    <p>}</p>
    <p>void CMainFrame::OnUpdateViewToolbar1(CCmdUI* pCmdUI) </p>
    <p>{</p>
    <p>// TODO: Add your command update UI handler code here</p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>pCmdUI-&gt;SetCheck(m_wndToolBar1.IsWindowVisible()); </b></p>
    <p>}</p>
    <p></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">CWnd::ShowWindow(SW_SHOW)</font><font SIZE="3">或</font><font FACE="Times New Roman" SIZE="3">CWnd::ShowWindow(SW_HIDE)</font><font SIZE="3">可以显示或隐藏窗口。由于工具条也是窗口,</font><font FACE="Times New Roman" SIZE="3">CToolBar</font><font SIZE="3">是</font><font FACE="Times New Roman" SIZE="3">CWnd</font><font SIZE="3">类的继承类,故该函数也是</font><font FACE="Times New Roman" SIZE="3">CToolBar</font><font SIZE="3">的成员。在命令处理函数</font><font FACE="Times New Roman" SIZE="3">OnViewToolbar1</font><font SIZE="3">中,我们调用</font><font FACE="Times New Roman" SIZE="3">CToolBar::ShowWindow</font><font SIZE="3">来显示</font><font FACE="Times New Roman" SIZE="3">/</font><font SIZE="3">隐藏工具条,在调用时会利用</font><font FACE="Times New Roman" SIZE="3">CWnd::IsWindowVisible</font><font SIZE="3">函数作出判断,如果工具条是可见的,就传给</font><font FACE="Times New Roman" SIZE="3">ShowWindow</font><font SIZE="3">函数</font><font FACE="Times New Roman" SIZE="3">SW_HIDE</font><font SIZE="3">参数以隐藏工具条,否则,就传</font><font FACE="Times New Roman" SIZE="3">SW_SHOW</font><font SIZE="3">参数显示工具条。接着要调用</font><font FACE="Times New Roman" SIZE="3">CMainFrame::RecalcLayout</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">OnUpdateViewToolbar1</font><font SIZE="3">会根据工具条是否可见使</font><font FACE="Times New Roman" SIZE="3">View-&gt;Toolbar1</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">Record</font><font SIZE="3">,现在</font><font FACE="Times New Roman" SIZE="3">Record</font><font SIZE="3">程序已变得很有趣了。至此,读者已经掌握了工具条的一些实用编程技术。</font><font FACE="Times New Roman" SIZE="3"><b></p>
    </b></font><div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="615">
      <tr>
        <td><a href="chap4_1.htm">上一页</a></td>
        <td><p align="right"><a href="chap4_3.htm">下一页</a></td>
      </tr>
    </table>
    </center></div><font SIZE="5"><hr noshade color="#3973DE" size="1">
    <p align="center"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual C++王朝(Where programmers come together)</a>协助制作<br>
    未经许可,请勿以任何形式复制</font></td>
    <b>
  </tr>
</table>
</center></div>

<p ALIGN="CENTER"></b><font SIZE="5"> </font><font FACE="Times New Roman" SIZE="5"></p>
</font><font FACE="Times New Roman" SIZE="3">

<p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
</font></b>

<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>

<p></font> </p>
</body>
</html>

⌨️ 快捷键说明

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