?? chap4_1.htm
字號(hào):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>4.1 工具條的可視化設(shè)計(jì)</title>
</head>
<body link="#3973DE" alink="#3973DE" background="../../bg.gif">
<font SIZE="5"><b><div align="center"><center>
<table border="0" width="85%" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF">
</b><td><div align="center"><center><table border="0" width="615" cellpadding="0"
cellspacing="0" height="20">
<tr>
<td width="377" bgcolor="#15397D" height="20"></td>
<td width="238" bgcolor="#000000" height="20"><p align="right"></font><a
href="../../vc.htm"><span style="text-decoration: none"><font color="#FFFFFF">電腦報(bào)Visual
C++網(wǎng)絡(luò)教程</font></span></a></td>
</tr>
</table>
</center></div><font FACE="Times New Roman" SIZE="3"><b><p ALIGN="CENTER"></b></font><font
color="#3973DE" FACE="Times New Roman" SIZE="3">4.1</font><font SIZE="3" color="#3973DE">
工具條的可視化設(shè)計(jì)</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><span style="font-size: 9pt"> 從4.0版開始,Visual C++支持一種新型的工具條資源,這使得工具條的創(chuàng)建比以往更加方便靈活了。在MFC中,工具條的功能由類CToolBar實(shí)現(xiàn)。工具條資源和工具條類CToolBar是工具條的兩個(gè)要素。創(chuàng)建工具條的基本步驟是:</span></p>
<blockquote>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">1.創(chuàng)建工具條資源。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">2.構(gòu)建一個(gè)CToolBar對(duì)象。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">3.調(diào)用CToolBar::Create函數(shù)創(chuàng)建工具條窗口。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">4.調(diào)用CToolBar::LoadToolBar載入工具條資源。</span></p>
</blockquote>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 使用缺省配置時(shí),AppWizard會(huì)自動(dòng)創(chuàng)建一個(gè)工具條。如圖4.1所示,這個(gè)工具條包含一些常用按鈕,如打開文件、存盤、打印等等。用戶可以修改這個(gè)工具條,去掉無用的按鈕,加入自己需要的按鈕。如果用戶需要?jiǎng)?chuàng)建兩個(gè)以上的工具條,則不能完全依賴AppWizard,需要自己手工創(chuàng)建之。本節(jié)將分別討論這兩種方法。</span><b></p>
<p ALIGN="JUSTIFY"></b><span style="font-size: 9pt"><font color="#3973DE">4.1.1利用AppWizard自動(dòng)創(chuàng)建</font></span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 自動(dòng)創(chuàng)建工具條很簡(jiǎn)單,請(qǐng)讀者按以下步驟操作:</span></p>
<ol>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">選擇 File->New命令。</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">在彈出的標(biāo)簽式對(duì)話框中選Projects頁,然后在該頁中選中MFC
AppWizard (exe)項(xiàng),并在Project name一欄中輸入Record以創(chuàng)建一個(gè)名為Record的工程。按回車或用鼠標(biāo)點(diǎn)擊Create按鈕后就進(jìn)入了MFC
AppWizard對(duì)話框。</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">在MFC AppWizard對(duì)話框的第一步中選中Single
document。這樣就會(huì)創(chuàng)建一個(gè)單文檔應(yīng)用程序,若選擇Multiple documents項(xiàng),則將創(chuàng)建一個(gè)多文檔應(yīng)用程序。單文檔程序一次只能打開一個(gè)窗口,顯示一個(gè)文檔的內(nèi)容,而多文檔程序一次可以打開多個(gè)窗口,顯示多個(gè)文檔的內(nèi)容。</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">用鼠標(biāo)點(diǎn)擊Finish按鈕,并在接著的對(duì)話框中按OK按鈕。</span></p>
</li>
</ol>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 完成以上操作后,工程Record被創(chuàng)建并被自動(dòng)載入Developer
Studio中。將項(xiàng)目工作區(qū)切換到資源視圖,并展開資源,就會(huì)發(fā)現(xiàn)其中有一個(gè)名為IDR_MAINFRAME的Toolbar(工具條)資源。用鼠標(biāo)雙擊“IDR_MAINFRAME”,Developer
Studio會(huì)打開一個(gè)功能強(qiáng)大的工具條資源編輯窗口,如圖4.2所示。該窗口的上部顯示出了工具條上的按鈕,當(dāng)用戶用鼠標(biāo)選擇某一按鈕時(shí),在窗口的下部會(huì)顯示該按鈕的位圖。在窗口旁邊有一個(gè)繪圖工具面板和一個(gè)顏色面板,供用戶編輯按鈕位圖時(shí)使用。</span></p>
<p ALIGN="center"><span style="font-size: 9pt"><img src="T4_2.gif"
alt="T4_2.tif (116672 bytes)" WIDTH="459" HEIGHT="236"></span></p>
<p ALIGN="center"><span style="font-size: 9pt">圖4.2 工具條資源編輯窗口</span></p>
<div align="center"><center><table border="2" cellpadding="2" cellspacing="0" width="90%"
bgcolor="#B4B4B4">
<tr>
<td width="100%"><span style="font-size: 9pt"><b>提示:如果讀者看不到這兩個(gè)面板,請(qǐng)?jiān)贒eveloper
Studio的工具條的空白處單擊鼠標(biāo)右鍵,并在隨之彈出的菜單中選中Graphics和Colors兩項(xiàng)。</b></span></td>
</tr>
</table>
</center></div><p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 在修改工具條以前,首先要修改菜單資源。請(qǐng)按以下幾步修改菜單資源:</span></p>
<ol>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">將項(xiàng)目工作區(qū)切換至資源視圖,選擇并打開menu(菜單)資源類型,雙擊名為IDR_MAINFRAME的菜單資源。</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">刪除Edit菜單。</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">刪除File菜單中除Exit以外的所有菜單項(xiàng)。</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">在File菜單后插入一個(gè)名為&Record的新菜單,并在該菜單中插入&Start和St&op兩個(gè)菜單項(xiàng),它們的命令I(lǐng)D(標(biāo)識(shí)符)分別為ID_RECORD_START和ID_RECORD_STOP。Start表示開始錄音,而Stop表示停止錄音。</span></p>
</li>
</ol>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 修改后的菜單如圖4.3所示。</span></p>
<p ALIGN="center"><span style="font-size: 9pt"><img src="T4_3.gif"
alt="T4_3.tif (27461 bytes)" WIDTH="251" HEIGHT="83"></span></p>
<p ALIGN="center"><span style="font-size: 9pt">圖4.3 修改后的菜單</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 接下來的任務(wù)是修改工具條資源,具體步驟是:</span></p>
<blockquote>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">選擇并打開Toolbar(工具條)資源類型,雙擊名為IDR_MAINFRAME的工具條資源以打開相應(yīng)的資源編輯窗口。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">刪除“?”按鈕前面的所有按鈕,刪除的方法是用鼠標(biāo)將要?jiǎng)h除的按鈕拖出工具條即可。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">先選中“?”按鈕后面的空白按鈕,然后在該按鈕的放大位圖上用紅色畫一個(gè)實(shí)心圓圈,以表示開始錄音功能。再選中空白按鈕,并用黑色在放大位圖上畫一個(gè)實(shí)心矩形,以表示停止功能。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">通過用鼠標(biāo)拖動(dòng)按鈕調(diào)整按鈕的位置,調(diào)整后的位置如圖4.4所示。</span></p>
<p ALIGN="center"><span style="font-size: 9pt"><img src="T4_4.gif"
alt="T4_4.tif (115062 bytes)" WIDTH="458" HEIGHT="233"></span></p>
<p ALIGN="center"><span style="font-size: 9pt">圖4.4 修改后的工具條資源</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">分別為兩個(gè)新加的按鈕指定命令I(lǐng)D為ID_RECORD_START和ID_RECORD_STOP。指定ID的方法是先選中一個(gè)按鈕,接著按回車鍵,在彈出的屬性對(duì)話框中輸入ID(或從ID下拉列表中分別選擇ID_RECORD_START和ID_RECORD_STOP)。注意到這兩個(gè)按鈕的ID與Record菜單中的兩個(gè)菜單項(xiàng)Start和Stop的ID相同,這樣同樣的命令既可以通過菜單執(zhí)行,也可以通過工具條執(zhí)行。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">為兩個(gè)新加的按鈕指定命令提示。請(qǐng)分別在兩個(gè)按鈕的屬性對(duì)話框中的Prompt欄內(nèi)輸入Start
record\nStart和Stop record\nStop。命令提示實(shí)際上是作為字符串保存在String
Table字符串資源中的。命令提示用來解釋命令的意義,分狀態(tài)欄提示和工具提示兩種,在Prompt欄中,二者由\n分隔開。當(dāng)鼠標(biāo)移動(dòng)到某個(gè)菜單項(xiàng)或工具條上的按鈕時(shí),在狀態(tài)欄中就會(huì)顯示狀態(tài)欄提示,當(dāng)鼠標(biāo)在某個(gè)按鈕上停留片刻后,工具提示就會(huì)在一個(gè)黃色的彈出式窗口中顯示出來。輸入完成后,讀者會(huì)發(fā)現(xiàn)Record菜單中的兩個(gè)菜單項(xiàng)被自動(dòng)加入了相同的提示信息,這說明兩個(gè)按鈕與兩個(gè)菜單項(xiàng)確實(shí)是相對(duì)應(yīng)的。</span></p>
<b>
</blockquote>
<div align="center"><center><table border="2" cellpadding="2" cellspacing="0" width="90%"
bgcolor="#BBFFFF">
<tr>
<td width="100%"></b><span style="font-size: 9pt">提示:如果覺得按鈕太小,讀者可以用鼠標(biāo)拖動(dòng)圍繞按鈕放大位圖的虛框的右下角,把按鈕放大些。注意工具條內(nèi)的所有按鈕都將被放大</span></td>
</tr>
</table>
</center></div><p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 修改完后,讀者可以編譯并運(yùn)行Record,來看看修改的結(jié)果。讀者很快會(huì)注意到Start和Stop菜單項(xiàng)及按鈕都是灰色的。這個(gè)現(xiàn)象是正常的,其原因?qū)⒃?.2節(jié)解釋。有趣的是工具條可以被拖動(dòng)(請(qǐng)?jiān)诠ぞ邨l的空白地方拖動(dòng))并停泊在主框架窗口的任何其它邊上,并且工具條是可以浮動(dòng)的,即當(dāng)用鼠標(biāo)雙擊工具條的空白處時(shí),工具條變成了一個(gè)浮動(dòng)窗口,可被拖動(dòng)到屏幕上的任意地方。這些有趣的現(xiàn)象將在4.2節(jié)解釋。不管怎么說,創(chuàng)建和修改工具條的任務(wù)已經(jīng)完成了。</span></p>
<b><p ALIGN="JUSTIFY"></b><span style="font-size: 9pt"><font color="#3973DE">4.1.2手工創(chuàng)建</font></span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 如果想要再加一個(gè)工具條,那么AppWizard就無能為力了,必須手工創(chuàng)建。假設(shè)Record程序的聲音采樣頻率有11KHZ和44KHZ兩檔選擇,現(xiàn)在我們的任務(wù)是再創(chuàng)建一個(gè)工具條,可讓用戶對(duì)這兩種檔次進(jìn)行選擇。本來這樣的功能應(yīng)該位于第一個(gè)工具條內(nèi),但為了演示工具條的手工創(chuàng)建,這里不妨來個(gè)多此一舉。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 如果Record工程不在Developer
Studio中,請(qǐng)選擇命令File->Open Workspace打開Record工程。首先要對(duì)原來的菜單進(jìn)行修改,步驟如下:</span></p>
<blockquote>
<ol>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">打開IDR_MAINFRAME菜單資源</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">雙擊Record菜單底端的空白項(xiàng),在其屬性窗口中選中Separator,這樣就加入了一條分隔線。</span></p>
</li>
<li><p ALIGN="JUSTIFY"><span style="font-size: 9pt">在分隔線下面加入兩個(gè)菜單項(xiàng),其屬性如表4.1所示。</span></p>
</li>
</ol>
</blockquote>
<p><b> </p>
<p ALIGN="CENTER"><span style="font-size: 9pt">表4.1 菜單項(xiàng)的屬性</span></b></p>
<table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
<tr>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">Caption</span></td>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">ID</span></td>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">Prompt</span></td>
</tr>
<tr>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">&Low quality</span></td>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">ID_LOW_QUALITY</span></td>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">Low quality(11k)\n11k</span></td>
</tr>
<tr>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">&High quality</span></td>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">ID_HIGH_QUALITY</span></td>
<td WIDTH="33%"><p ALIGN="CENTER"><span style="font-size: 9pt">High quality(44k)\n44k</span></td>
</tr>
</table>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> 接著要?jiǎng)?chuàng)建一個(gè)新的工具條資源,請(qǐng)按以下步驟進(jìn)行:</span></p>
<blockquote>
<blockquote>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">選擇Insert->Resource命令,然后在Insert
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -