?? 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 + -