📄 chap4_1.htm
字号:
<p ALIGN="JUSTIFY">TRACE0("Failed to create toolbar\n");</p>
<p ALIGN="JUSTIFY">return -1; // fail to create</p>
<p ALIGN="JUSTIFY">}</b></p>
<p ALIGN="JUSTIFY"> </p>
<p ALIGN="JUSTIFY">if (!m_wndStatusBar.Create(this) ||</p>
<p ALIGN="JUSTIFY">!m_wndStatusBar.SetIndicators(indicators,</p>
<p ALIGN="JUSTIFY">sizeof(indicators)/sizeof(UINT)))</p>
<p ALIGN="JUSTIFY">{</p>
<p ALIGN="JUSTIFY">TRACE0("Failed to create status bar\n");</p>
<p ALIGN="JUSTIFY">return -1; // fail to create</p>
<p ALIGN="JUSTIFY">}</p>
<p ALIGN="JUSTIFY"> </p>
<p ALIGN="JUSTIFY">// TODO: Remove this if you don't want tool tips or a resizeable
toolbar</p>
<p ALIGN="JUSTIFY">m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |</p>
<p ALIGN="JUSTIFY">CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);</p>
<p ALIGN="JUSTIFY"> </p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<b><p ALIGN="JUSTIFY">m_wndToolBar1.SetBarStyle(m_wndToolBar1.GetBarStyle()|CBRS_TOOLTIPS
| CBRS_FLYBY | CBRS_SIZE_DYNAMIC);</p>
</b>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<p ALIGN="JUSTIFY">// TODO: Delete these three lines if you don't want the toolbar to</p>
<p ALIGN="JUSTIFY">// be dockable</p>
<p ALIGN="JUSTIFY">m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);</p>
<p> <b></p>
<p ALIGN="JUSTIFY">m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY);</b></p>
<p ALIGN="JUSTIFY"> </p>
<p ALIGN="JUSTIFY">EnableDocking(CBRS_ALIGN_ANY);</p>
<p ALIGN="JUSTIFY"> </p>
<p ALIGN="JUSTIFY">DockControlBar(&m_wndToolBar);</p>
<p> <b></p>
<p ALIGN="JUSTIFY">DockControlBar(&m_wndToolBar1);</b></p>
<p ALIGN="JUSTIFY">return 0;</p>
<p ALIGN="JUSTIFY">}</p>
<b><p ALIGN="JUSTIFY"></b></font><font SIZE="3">注意在</font><font FACE="Times New Roman" SIZE="3">CMainFrame::OnCreate</font><font SIZE="3">函数首先调用了</font><font FACE="Times New Roman" SIZE="3">CFrameWnd::OnCreate</font><font SIZE="3">。这行代码是</font><font FACE="Times New Roman" SIZE="3">AppWizard</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">CFrameWnd</font><font SIZE="3">类的继承类,在</font><font FACE="Times New Roman" SIZE="3">CMainFrame::OnCreate</font><font SIZE="3">中首先要调用基类</font><font FACE="Times New Roman" SIZE="3">CFrameWnd</font><font SIZE="3">的</font><font FACE="Times New Roman" SIZE="3">OnCreate</font><font SIZE="3">函数,因为基类也要进行一些初始化工作,而基类的</font><font FACE="Times New Roman" SIZE="3">OnCreate</font><font SIZE="3">函数不会自动调用,因此需要在继承类的</font><font FACE="Times New Roman" SIZE="3">OnCreate</font><font SIZE="3">函数中显式调用。</font><font FACE="Times New Roman" SIZE="3">OnCreate</font><font SIZE="3">实际上是</font><font FACE="Times New Roman" SIZE="3">WM_CREATE</font><font SIZE="3">消息的消息处理函数,读者可能要问,为什么是派生类的</font><font FACE="Times New Roman" SIZE="3">OnCreate</font><font SIZE="3">处理</font><font FACE="Times New Roman" SIZE="3">WM_CREATE</font><font SIZE="3">消息,而不是基类的</font><font FACE="Times New Roman" SIZE="3">OnCreate</font><font SIZE="3">呢。如果读者仔细观察</font><font FACE="Times New Roman" SIZE="3">OnCreate</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">afx_msg</font><font SIZE="3">前缀。</font><font FACE="Times New Roman" SIZE="3">afx_msg</font><font SIZE="3">的作用与</font><font FACE="Times New Roman" SIZE="3">virtual</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>
</font><font SIZE="3"><b><div align="center"><center><table border="2" cellpadding="2" cellspacing="0" width="90%" bgcolor="#BBFFFF">
<tr>
<td width="100%"></b>提示</font><font FACE="Times New Roman" SIZE="3">: </font><font SIZE="3">读者不必为这种“抄袭”行为感到羞愧。由于</font><font FACE="Times New Roman" SIZE="3">Visual C++</font><font SIZE="3">博大精深,各种类和函数成百上千,除非你有外星人一般的记忆力,否则是不可能记住所有东西的。用</font><font FACE="Times New Roman" SIZE="3">Visual C++</font><font SIZE="3">编程,重要的是理解而不是记忆。只要你理解了程序的来龙去脉,就可以最大限度的利用现有的成熟代码,提高程序的开发效率和可靠性。<b></td>
</tr>
</table>
</center></div></b></font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY"></font><font SIZE="3">对第二个工具条的创建代码的解释是:首先,调用</font><font FACE="Times New Roman" SIZE="3">CToolBar::Create</font><font SIZE="3">以创建工具条窗口,注意</font><font FACE="Times New Roman" SIZE="3">Create</font><font SIZE="3">函数的参数是</font><font FACE="Times New Roman" SIZE="3">this</font><font SIZE="3">指针,这是因为主框架窗口是工具条的父窗口。接着调用</font><font FACE="Times New Roman" SIZE="3">CToolbar::LoadToolBar(IDR_TOOLBAR1)</font><font SIZE="3">以载入工具条资源。然后调用</font><font FACE="Times New Roman" SIZE="3">CToolBar::SetBarStyle</font><font SIZE="3">指定工具条的风格,在调用该函数时先调用</font><font FACE="Times New Roman" SIZE="3">CToolBar::GetBarStyle</font><font SIZE="3">取得工具条的风格,然后在原有风格的基础上又指定了</font><font FACE="Times New Roman" SIZE="3">CBRS_TOOLTIPS</font><font SIZE="3">、 </font><font FACE="Times New Roman" SIZE="3">CBRS_FLYBY</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">CBRS_SIZE_DYNAMIC</font><font SIZE="3">风格,这使得工具条可显示工具提示,并可以动态改变尺寸。接着调用</font><font FACE="Times New Roman" SIZE="3">CToolBar::EnableDocking(CBRS_ALIGN_ANY)</font><font SIZE="3">使工具条是可以停泊的,但还需调用</font><font FACE="Times New Roman" SIZE="3">CFrameWnd::EnableDocking(CBRS_ALIGN_ANY)</font><font SIZE="3">,只有这样才能实现可停泊的工具条。最后调用</font><font FACE="Times New Roman" SIZE="3">CFrameWnd::DockControlBar</font><font SIZE="3">以停泊工具条。</font><font FACE="Times New Roman" SIZE="3"><b></p>
<p ALIGN="JUSTIFY"></b></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>
</font><div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="615">
<tr>
<td><a href="../chap2/chap2_4.htm">上一页</a></td>
<td><p align="right"><a href="../chap2/chap2_6.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 + -