




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第 4 4 章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 4.1 菜單菜單 4.2 工具欄工具欄 4.3 狀態(tài)欄狀態(tài)欄 4.4 應(yīng)用實(shí)例應(yīng)用實(shí)例visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 24.1 4.1 菜單菜單 4.1.1 菜單的類型菜單的類型 常見(jiàn)菜單有常見(jiàn)菜單有3 3種種:主菜單、彈出菜單和快捷菜單主菜單、彈出菜單和快捷菜單。1.1.主菜單主菜單 指出現(xiàn)在應(yīng)用程序主窗口或最上層窗口的菜單。指出現(xiàn)在應(yīng)用程序主窗口或最上層窗口的菜單。通常對(duì)應(yīng)有一個(gè)彈出菜單作為它的子菜單。通常對(duì)應(yīng)有一個(gè)彈出菜單作為它的子菜單。visu
2、al c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 32.2.彈出菜單彈出菜單 指指選擇主菜單或一個(gè)菜單項(xiàng)時(shí)彈出的子菜單選擇主菜單或一個(gè)菜單項(xiàng)時(shí)彈出的子菜單。3.3.快捷菜單快捷菜單 當(dāng)當(dāng)右擊某個(gè)界面對(duì)象右擊某個(gè)界面對(duì)象時(shí),通常會(huì)時(shí),通常會(huì)彈出快捷菜單彈出快捷菜單,它出現(xiàn)在鼠標(biāo)箭頭的位置,它出現(xiàn)在鼠標(biāo)箭頭的位置,快速展示當(dāng)前對(duì)象可用的快速展示當(dāng)前對(duì)象可用的命令功能命令功能。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 4菜單設(shè)計(jì)一般需要經(jīng)過(guò)下面兩步:菜單設(shè)計(jì)一般需要經(jīng)過(guò)下面
3、兩步:(1) (1) 使用菜單編輯器編輯菜單資源;使用菜單編輯器編輯菜單資源;(2) (2) 使用使用classwizardclasswizard進(jìn)行消息映射,編輯成員函進(jìn)行消息映射,編輯成員函數(shù),完成菜單所要實(shí)現(xiàn)的功能。數(shù),完成菜單所要實(shí)現(xiàn)的功能。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 54.1.2 編輯菜單編輯菜單 使用菜單編輯器來(lái)編輯菜單資源。雙擊使用菜單編輯器來(lái)編輯菜單資源。雙擊resourceviewresourceview視圖中的視圖中的menumenu菜單資源,打開(kāi)菜單編輯器。菜單資源,打開(kāi)菜單編輯器。 v
4、isual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 61.1.插入新菜單項(xiàng)插入新菜單項(xiàng)在當(dāng)前空白菜單項(xiàng)位置插入在當(dāng)前空白菜單項(xiàng)位置插入 選定窗口中的空白菜單項(xiàng)后按回車鍵選定窗口中的空白菜單項(xiàng)后按回車鍵( (或雙或雙擊空白菜單項(xiàng)擊空白菜單項(xiàng)) ),系統(tǒng)彈出菜單屬性對(duì)話框。,系統(tǒng)彈出菜單屬性對(duì)話框。在某菜單項(xiàng)前插入在某菜單項(xiàng)前插入 選中該菜單項(xiàng)并按選中該菜單項(xiàng)并按insins鍵,再雙擊該空白鍵,再雙擊該空白菜單項(xiàng)進(jìn)行編輯。菜單項(xiàng)進(jìn)行編輯。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具
5、欄與狀態(tài)欄 72.2.屬性對(duì)話框的設(shè)置屬性對(duì)話框的設(shè)置 用于輸入菜單項(xiàng)的用于輸入菜單項(xiàng)的標(biāo)識(shí)符標(biāo)識(shí)符(id)(id)、標(biāo)題標(biāo)題(caption)(caption)和菜和菜單項(xiàng)在狀態(tài)欄上顯示的單項(xiàng)在狀態(tài)欄上顯示的提示提示(prompt)(prompt)信息等信息等。 菜單項(xiàng)的標(biāo)菜單項(xiàng)的標(biāo)識(shí)符識(shí)符(id)(id)菜單項(xiàng)在狀態(tài)欄上菜單項(xiàng)在狀態(tài)欄上顯示的提示信息顯示的提示信息標(biāo)題標(biāo)題visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 8visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與
6、狀態(tài)欄 93.3.調(diào)整菜單項(xiàng)位置調(diào)整菜單項(xiàng)位置 選中某菜單項(xiàng)將其拖至適當(dāng)位置。選中某菜單項(xiàng)將其拖至適當(dāng)位置。4.4.刪除菜單項(xiàng)刪除菜單項(xiàng) 用鼠標(biāo)單擊菜單項(xiàng)或用上、下、左、右光標(biāo)鍵用鼠標(biāo)單擊菜單項(xiàng)或用上、下、左、右光標(biāo)鍵選擇菜單項(xiàng),然后單擊選擇菜單項(xiàng),然后單擊cutcut按鈕或按按鈕或按deldel鍵刪除。鍵刪除。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 10【例例4.1】編寫(xiě)一個(gè)單文檔應(yīng)用程序編寫(xiě)一個(gè)單文檔應(yīng)用程序mydraw,在菜單欄,在菜單欄中增加一個(gè)中增加一個(gè)“繪圖繪圖”主菜單,并在其中添加主菜單,并在其中添加“矩形
7、矩形”和和“橢圓橢圓”兩個(gè)菜單項(xiàng)。兩個(gè)菜單項(xiàng)。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 114.1.3 建立消息映射建立消息映射 在上例中僅添加了菜單,并沒(méi)有實(shí)現(xiàn)菜單的功能,在上例中僅添加了菜單,并沒(méi)有實(shí)現(xiàn)菜單的功能,即沒(méi)有對(duì)應(yīng)的命令處理函數(shù)與菜單項(xiàng)對(duì)應(yīng),因此,添即沒(méi)有對(duì)應(yīng)的命令處理函數(shù)與菜單項(xiàng)對(duì)應(yīng),因此,添加的菜單項(xiàng)是加的菜單項(xiàng)是灰色灰色的,即的,即處于當(dāng)前不可用狀態(tài)處于當(dāng)前不可用狀態(tài)。 添加新的菜單項(xiàng)后,還應(yīng)該為菜單項(xiàng)指定一個(gè)處添加新的菜單項(xiàng)后,還應(yīng)該為菜單項(xiàng)指定一個(gè)處理函數(shù),即利用理函數(shù),即利用classwizard
8、classwizard類向?qū)砑右粋€(gè)消息處理類向?qū)砑右粋€(gè)消息處理函數(shù)。函數(shù)。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 12【例例4.24.2】為例為例4.14.1中增加的菜單項(xiàng)添加消息處理函數(shù)。中增加的菜單項(xiàng)添加消息處理函數(shù)。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 134.1.4 菜單的有效控制菜單的有效控制 一般情況下,菜單項(xiàng)都不止一種狀態(tài)。一般情況下,菜單項(xiàng)都不止一種狀態(tài)。 例如,在沒(méi)有選擇任何內(nèi)容時(shí),例如,在沒(méi)有選擇任何內(nèi)容時(shí),editedi
9、t菜單下的菜單下的copycopy、cutcut等菜單項(xiàng)是無(wú)效的等菜單項(xiàng)是無(wú)效的( (灰色顯示灰色顯示) )。有時(shí),我們還會(huì)看到,在菜單。有時(shí),我們還會(huì)看到,在菜單項(xiàng)旁邊可能還會(huì)有檢查標(biāo)記,表示它是選中的還是不選中的。項(xiàng)旁邊可能還會(huì)有檢查標(biāo)記,表示它是選中的還是不選中的。比如,在比如,在wordword的視圖菜單項(xiàng)下,當(dāng)用戶選用的視圖菜單項(xiàng)下,當(dāng)用戶選用【網(wǎng)格線網(wǎng)格線】或或【標(biāo)標(biāo)尺尺】時(shí),相應(yīng)菜單項(xiàng)前會(huì)出現(xiàn)一個(gè)時(shí),相應(yīng)菜單項(xiàng)前會(huì)出現(xiàn)一個(gè)“”。 mfcmfc通過(guò)消息映射機(jī)制和通過(guò)消息映射機(jī)制和ccmduiccmdui類更新菜單項(xiàng)類更新菜單項(xiàng)的顯示的顯示。visual c+程序設(shè)計(jì)與應(yīng)用教程202
10、1/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 14 在類向?qū)г陬愊驅(qū)lasswizardclasswizard的的message mapmessage map標(biāo)簽中,標(biāo)簽中,如果選擇一個(gè)菜單如果選擇一個(gè)菜單idid,在,在messagesmessages列表框中就會(huì)列表框中就會(huì)出現(xiàn)以下兩項(xiàng):出現(xiàn)以下兩項(xiàng): commandupdate_command_ui 其中其中update_command_ui是更新命令用是更新命令用戶接口消息,專門用于處理菜單項(xiàng)和工具條按鈕戶接口消息,專門用于處理菜單項(xiàng)和工具條按鈕的更新。的更新。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/1
11、1/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 15【例例4.34.3】為例為例4.24.2的程序的程序mydrawmydraw添加更新用戶界面的消添加更新用戶界面的消息處理函數(shù),使程序啟動(dòng)時(shí)菜單項(xiàng)息處理函數(shù),使程序啟動(dòng)時(shí)菜單項(xiàng)【橢圓橢圓】處于不可用處于不可用狀態(tài),當(dāng)用戶單擊狀態(tài),當(dāng)用戶單擊【矩形矩形】菜單項(xiàng)后,在菜單項(xiàng)前顯示菜單項(xiàng)后,在菜單項(xiàng)前顯示 “” 標(biāo)記,并使標(biāo)記,并使【橢圓橢圓】菜單項(xiàng)變?yōu)榭捎?。菜單?xiàng)變?yōu)榭捎谩isual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 164.1.5 快捷菜單快捷菜單 為應(yīng)用程序
12、創(chuàng)建快捷菜單主要有以下兩種方法。為應(yīng)用程序創(chuàng)建快捷菜單主要有以下兩種方法。1.1.使用使用component gallerycomponent gallery創(chuàng)建快捷菜單創(chuàng)建快捷菜單 component gallery(component gallery(組件畫(huà)廊組件畫(huà)廊) )是一個(gè)組件庫(kù),它是一個(gè)組件庫(kù),它保存著可以共享或重用的代碼。這些代碼包括由保存著可以共享或重用的代碼。這些代碼包括由visual visual c+c+自帶的組件和從用戶工程中增加到自帶的組件和從用戶工程中增加到gallerygallery中去的用中去的用戶自定義組件。戶自定義組件。visual c+程序設(shè)計(jì)與應(yīng)用教程2
13、021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 17【例例4.4】 為例為例4.3中的應(yīng)用程序中的應(yīng)用程序mydraw增加一個(gè)快捷增加一個(gè)快捷菜單。程序運(yùn)行后,用戶在視圖窗口中右擊,彈出一個(gè)菜單。程序運(yùn)行后,用戶在視圖窗口中右擊,彈出一個(gè)快捷菜單,顯示主菜單快捷菜單,顯示主菜單“繪圖繪圖”下的所有菜單項(xiàng)。下的所有菜單項(xiàng)??旖莶藛慰旖莶藛蝪isual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 182.2.使用使用trackpopupmenu( )trackpopupmenu( )函數(shù)創(chuàng)建快捷菜單函數(shù)創(chuàng)建快捷菜單
14、 使用菜單資源編輯器和使用菜單資源編輯器和cmenu:trackpopupmenu( )cmenu:trackpopupmenu( )函函數(shù)來(lái)創(chuàng)建右鍵快捷菜單。數(shù)來(lái)創(chuàng)建右鍵快捷菜單。cmenu:trackpopupmenucmenu:trackpopupmenu函數(shù)的原型為:函數(shù)的原型為: bool trackpopupmenu(uint nflags,int x,int y,cwnd* pwnd,lpcrect lprect=null); 該函數(shù)的功能是顯示一個(gè)右鍵快捷菜單。其中,該函數(shù)的功能是顯示一個(gè)右鍵快捷菜單。其中,nflagsnflags表示屏幕位置標(biāo)志(見(jiàn)下表)。表示屏幕位置標(biāo)志(
15、見(jiàn)下表)。x x、y y分別表示菜單分別表示菜單的水平坐標(biāo)和頂端的垂直坐標(biāo);的水平坐標(biāo)和頂端的垂直坐標(biāo);pwndpwnd表示彈出菜單的窗口,表示彈出菜單的窗口,包括全部的包括全部的wm_commandwm_command消息;消息;lprectlprect表示一個(gè)矩形域,當(dāng)表示一個(gè)矩形域,當(dāng)單擊這個(gè)矩形域時(shí)菜單不消失。單擊這個(gè)矩形域時(shí)菜單不消失。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 19參數(shù)參數(shù)nflags的含義的含義 visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工
16、具欄與狀態(tài)欄 20【例例4.5】 使用使用trackpopupmenu( )函數(shù)創(chuàng)建例函數(shù)創(chuàng)建例4.3中的快捷中的快捷菜單。菜單。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 214.1.6 創(chuàng)建動(dòng)態(tài)菜單創(chuàng)建動(dòng)態(tài)菜單動(dòng)態(tài)創(chuàng)建菜單分為以下動(dòng)態(tài)創(chuàng)建菜單分為以下3 3個(gè)步驟。個(gè)步驟。(1) (1) 利用利用createmenu( )createmenu( )函數(shù)創(chuàng)建一個(gè)空的彈出式菜單,函數(shù)創(chuàng)建一個(gè)空的彈出式菜單,該函數(shù)的原型為:該函數(shù)的原型為: hmenu createmenu() 該函數(shù)沒(méi)有參數(shù),它的返回值是一個(gè)菜單句柄。該函數(shù)沒(méi)
17、有參數(shù),它的返回值是一個(gè)菜單句柄。 (2) 調(diào)用調(diào)用appendmenu( )或或insertmenu( )函數(shù)在菜單中加函數(shù)在菜單中加入菜單項(xiàng)。入菜單項(xiàng)。 (3) (3) 調(diào)用函數(shù)調(diào)用函數(shù)setmenu( )setmenu( )加載動(dòng)態(tài)菜單。加載動(dòng)態(tài)菜單。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 22【例例4.6】為例為例4.4中的應(yīng)用程序中的應(yīng)用程序mydraw創(chuàng)建一個(gè)創(chuàng)建一個(gè)【畫(huà)畫(huà)筆筆】動(dòng)態(tài)菜單。程序運(yùn)行后,用戶單擊動(dòng)態(tài)菜單。程序運(yùn)行后,用戶單擊【繪圖繪圖 | 矩形矩形】菜單項(xiàng),在主菜單中添加動(dòng)態(tài)菜單菜單項(xiàng),在主菜單
18、中添加動(dòng)態(tài)菜單【畫(huà)筆畫(huà)筆】,并通過(guò)此,并通過(guò)此菜單的子菜單項(xiàng)畫(huà)一個(gè)紅色矩形。菜單的子菜單項(xiàng)畫(huà)一個(gè)紅色矩形。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 234.1.7 創(chuàng)建基于對(duì)話框的菜單創(chuàng)建基于對(duì)話框的菜單 從第從第2 2章可知,利用章可知,利用mfc appwizardexemfc appwizardexe向?qū)Чぞ呖上驅(qū)Чぞ呖梢陨苫趯?duì)話框的應(yīng)用程序。以生成基于對(duì)話框的應(yīng)用程序。 基于對(duì)話框的應(yīng)用程序在運(yùn)行時(shí)并沒(méi)有菜單欄。基于對(duì)話框的應(yīng)用程序在運(yùn)行時(shí)并沒(méi)有菜單欄。 下面我們通過(guò)實(shí)例來(lái)討論如何給它創(chuàng)建一個(gè)菜單。下面我們通過(guò)
19、實(shí)例來(lái)討論如何給它創(chuàng)建一個(gè)菜單。 visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 24【例例4.7】 編寫(xiě)一個(gè)基于對(duì)話框的應(yīng)用程序編寫(xiě)一個(gè)基于對(duì)話框的應(yīng)用程序li4_7,為該應(yīng),為該應(yīng)用程序添加一個(gè)菜單。菜單包括用程序添加一個(gè)菜單。菜單包括【文件文件】、【編輯編輯】、【視圖視圖】和和【幫助幫助】4個(gè)主菜單項(xiàng)。個(gè)主菜單項(xiàng)。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 254.2 4.2 工具欄工具欄 在在mfcmfc中,工具欄的功能由類中,工具欄的功能由類ctoo
20、lbarctoolbar實(shí)現(xiàn)。工具實(shí)現(xiàn)。工具欄資源和工具欄類欄資源和工具欄類ctoolbarctoolbar是工具欄的兩個(gè)要素。創(chuàng)建是工具欄的兩個(gè)要素。創(chuàng)建工具欄的基本步驟是:工具欄的基本步驟是:l l 創(chuàng)建工具欄資源;創(chuàng)建工具欄資源;l l 構(gòu)建一個(gè)構(gòu)建一個(gè)ctoolbarctoolbar對(duì)象;對(duì)象;l l 調(diào)用調(diào)用ctoolbar:create( )ctoolbar:create( )或或createex( )createex( )函數(shù)創(chuàng)函數(shù)創(chuàng)建工具欄窗口;建工具欄窗口;l l 調(diào)用調(diào)用ctoolbar:loadtoolbarctoolbar:loadtoolbar載入工具欄資源。載入工具
21、欄資源。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 264.2.1 編輯工具欄編輯工具欄 使 用 工 具 欄 編 輯 器 來(lái) 編 輯 工 具 欄 資 源 。 雙 擊使 用 工 具 欄 編 輯 器 來(lái) 編 輯 工 具 欄 資 源 。 雙 擊resourceviewresourceview視圖中的視圖中的toolbartoolbar工具欄資源,即可打開(kāi)工工具欄資源,即可打開(kāi)工具欄編輯器。具欄編輯器。 visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 271.1.添加
22、按鈕添加按鈕 雙擊工具條上的空白按鈕或單擊空白按鈕后,選雙擊工具條上的空白按鈕或單擊空白按鈕后,選擇擇【view|properties】菜單項(xiàng),彈出如圖所示的菜單項(xiàng),彈出如圖所示的toolbar button properties屬性對(duì)話框,在此對(duì)話框?qū)傩詫?duì)話框,在此對(duì)話框中編輯按鈕的標(biāo)識(shí)符、寬度與高度值。中編輯按鈕的標(biāo)識(shí)符、寬度與高度值。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 282.2.刪除按鈕刪除按鈕 將按鈕拖出工具欄外,即可刪除該按鈕。將按鈕拖出工具欄外,即可刪除該按鈕。3.3.編輯按鈕位圖編輯按鈕位圖設(shè)置按鈕位
23、圖有以下兩種方法。設(shè)置按鈕位圖有以下兩種方法。l l 利用繪圖工具與調(diào)色板直接進(jìn)行繪制利用繪圖工具與調(diào)色板直接進(jìn)行繪制l l 先利用專用繪圖軟件制作,然后粘貼到按鈕上先利用專用繪圖軟件制作,然后粘貼到按鈕上visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 294.2.2 建立消息映射建立消息映射 通常,只需讓一個(gè)按鈕的通常,只需讓一個(gè)按鈕的idid值與同樣功能菜單項(xiàng)的值與同樣功能菜單項(xiàng)的idid值相同即可。值相同即可。 如果按鈕沒(méi)有對(duì)應(yīng)菜單項(xiàng),則必須利用如果按鈕沒(méi)有對(duì)應(yīng)菜單項(xiàng),則必須利用classwizardclasswizard
24、類向?qū)砑右粋€(gè)消息處理函數(shù)。類向?qū)砑右粋€(gè)消息處理函數(shù)。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 30【例例4.8】 編寫(xiě)一個(gè)單文檔應(yīng)用程序編寫(xiě)一個(gè)單文檔應(yīng)用程序li4_8。刪除默認(rèn)工具。刪除默認(rèn)工具欄上的欄上的【打印設(shè)置打印設(shè)置】按鈕,并在按鈕,并在【幫助幫助】按鈕前添加按鈕前添加【上上一頁(yè)一頁(yè)】和和【下一頁(yè)下一頁(yè)】2個(gè)按鈕,當(dāng)用戶單擊這兩個(gè)按鈕后,個(gè)按鈕,當(dāng)用戶單擊這兩個(gè)按鈕后,視圖中分別顯示文本視圖中分別顯示文本“這是這是上一頁(yè)上一頁(yè)按鈕!按鈕!”和和“這是這是下一頁(yè)下一頁(yè)按鈕!按鈕!”。visual c+程序設(shè)計(jì)與
25、應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 314.2.3 自定義工具欄的操作自定義工具欄的操作 向?qū)傻臉?biāo)準(zhǔn)工具欄的向?qū)傻臉?biāo)準(zhǔn)工具欄的idid值為值為idr_mainframeidr_mainframe。 對(duì)一些功能復(fù)雜的應(yīng)用程序,需要?jiǎng)?chuàng)建多個(gè)不同的工具欄。對(duì)一些功能復(fù)雜的應(yīng)用程序,需要?jiǎng)?chuàng)建多個(gè)不同的工具欄。生成工具欄的基本步驟:生成工具欄的基本步驟: (1)添加工具欄資源)添加工具欄資源; (2)參照)參照mfcmfc應(yīng)用程序框架添加工具欄的方法,構(gòu)造一應(yīng)用程序框架添加工具欄的方法,構(gòu)造一個(gè)個(gè)ctoolbarctoolbar類的對(duì)象,調(diào)用類的
26、對(duì)象,調(diào)用ctoolbar:create( )ctoolbar:create( )或或createex( )createex( )函數(shù)創(chuàng)建工具欄窗口函數(shù)創(chuàng)建工具欄窗口; (3)調(diào)用)調(diào)用ctoolbar:loadtoolbar( )ctoolbar:loadtoolbar( )函數(shù)載入工具欄函數(shù)載入工具欄資源。資源。 除這些基本步驟之外,還可除這些基本步驟之外,還可以調(diào)用其他相關(guān)函數(shù)從而進(jìn)以調(diào)用其他相關(guān)函數(shù)從而進(jìn)一步改善工具欄。一步改善工具欄。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 321.創(chuàng)建工具欄窗口創(chuàng)建工具欄窗口
27、調(diào)用調(diào)用ctoolbar:create( )或或createex( )函數(shù)創(chuàng)建并初始函數(shù)創(chuàng)建并初始化工具欄窗口對(duì)象。若創(chuàng)建成功,函數(shù)返回化工具欄窗口對(duì)象。若創(chuàng)建成功,函數(shù)返回true,否則返,否則返回回false。2.裝載工具欄資源裝載工具欄資源 調(diào)用調(diào)用loadtoolbar( )函數(shù)裝載工具欄資源。用函數(shù)裝載工具欄資源。用create( )或者或者createex( )函數(shù)創(chuàng)建工具欄,其實(shí)只是獲得了一個(gè)窗口函數(shù)創(chuàng)建工具欄,其實(shí)只是獲得了一個(gè)窗口句柄,工具欄窗口中位圖按鈕的加載是靠句柄,工具欄窗口中位圖按鈕的加載是靠loadtoolbar( )函函數(shù)來(lái)完成的。若加載成功,將返回?cái)?shù)來(lái)完成的。若
28、加載成功,將返回true,否則返回,否則返回false。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 333.設(shè)置工具欄風(fēng)格設(shè)置工具欄風(fēng)格 如果在調(diào)用初始化函數(shù)如果在調(diào)用初始化函數(shù)ctoolbar:create( )或者或者createex( )時(shí)設(shè)置的工具欄風(fēng)格不滿足需要,可以再用時(shí)設(shè)置的工具欄風(fēng)格不滿足需要,可以再用setbarstyle( )函數(shù)重新進(jìn)行設(shè)置。函數(shù)重新進(jìn)行設(shè)置。4.設(shè)置工具欄停靠特性設(shè)置工具欄??刻匦?設(shè)置工具欄停靠特性,需要調(diào)用設(shè)置工具欄??刻匦裕枰{(diào)用enabledocking( )函數(shù)。函數(shù)。既要
29、調(diào)用既要調(diào)用ccontrolbar: enabledocking( )函數(shù)設(shè)置工具欄函數(shù)設(shè)置工具欄的??刻匦?,還要調(diào)用框架類的成員函數(shù)的??刻匦?,還要調(diào)用框架類的成員函數(shù)enabledocking( )函數(shù)來(lái)設(shè)置框架窗口以允許它的子窗口控制欄可以以何種函數(shù)來(lái)設(shè)置框架窗口以允許它的子窗口控制欄可以以何種方式??俊2还芤粋€(gè)框架窗口中有多少個(gè)子窗口控制欄,方式??俊2还芤粋€(gè)框架窗口中有多少個(gè)子窗口控制欄,該函數(shù)只需調(diào)用一次。該函數(shù)只需調(diào)用一次。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 345. 設(shè)置工具欄的初始??课恢迷O(shè)置工具欄
30、的初始停靠位置 通過(guò)調(diào)用通過(guò)調(diào)用cframewnd:dockcontrolbar( )函數(shù)定函數(shù)定位一個(gè)工具欄的初始??课恢谩N灰粋€(gè)工具欄的初始??课恢?。6.移動(dòng)工具欄移動(dòng)工具欄 調(diào)用調(diào)用cframewnd:floatcontrolbar( )函數(shù)來(lái)移動(dòng)、函數(shù)來(lái)移動(dòng)、定位一個(gè)工具欄。定位一個(gè)工具欄。7. 工具欄隱顯控制工具欄隱顯控制 通過(guò)對(duì)函數(shù)通過(guò)對(duì)函數(shù)cwnd:setstyle( )的調(diào)用可以改變某些的調(diào)用可以改變某些工具欄窗口的風(fēng)格,但該函數(shù)不能改變工具欄窗口的風(fēng)格,但該函數(shù)不能改變ws_visible,只能通過(guò)父類只能通過(guò)父類cwnd的的showwindow( )成員函數(shù)來(lái)顯示成員函數(shù)來(lái)
31、顯示或隱藏工具欄?;螂[藏工具欄。 visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 35【例例4.9】編寫(xiě)一個(gè)單文檔應(yīng)用程序編寫(xiě)一個(gè)單文檔應(yīng)用程序li4_9。為該應(yīng)用程序創(chuàng)。為該應(yīng)用程序創(chuàng)建一個(gè)帶有建一個(gè)帶有“線線”、“圓圓”、“矩形矩形”和和“文本文本”4個(gè)按鈕個(gè)按鈕的工具欄,當(dāng)用戶單擊工具欄上的按鈕時(shí),在窗口中顯示的工具欄,當(dāng)用戶單擊工具欄上的按鈕時(shí),在窗口中顯示相應(yīng)的圖形。相應(yīng)的圖形。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 364.3 4.3 狀態(tài)欄狀
32、態(tài)欄 狀態(tài)欄實(shí)際上是一個(gè)窗口,一般分為幾個(gè)窗格,每個(gè)狀態(tài)欄實(shí)際上是一個(gè)窗口,一般分為幾個(gè)窗格,每個(gè)窗格顯示不同的信息。窗格顯示不同的信息。 使用使用appwizard創(chuàng)建的單文檔應(yīng)用程序,接受默認(rèn)選項(xiàng)創(chuàng)建的單文檔應(yīng)用程序,接受默認(rèn)選項(xiàng)時(shí),生成的應(yīng)用程序自動(dòng)創(chuàng)建帶有默認(rèn)窗格的狀態(tài)欄。時(shí),生成的應(yīng)用程序自動(dòng)創(chuàng)建帶有默認(rèn)窗格的狀態(tài)欄。visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 37 4.3.1 狀態(tài)欄類的繼承關(guān)系狀態(tài)欄類的繼承關(guān)系 在在mfc中,狀態(tài)欄的功能由中,狀態(tài)欄的功能由cstatusbar類實(shí)現(xiàn)。類實(shí)現(xiàn)。 cobject
33、ccmdtarget cwnd ccontrolbar cstatusbar visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 38 4.3.2 狀態(tài)欄類的成員函數(shù)狀態(tài)欄類的成員函數(shù) 成員函數(shù)名 功 能 create createex setindicators setpanetext commandtoindex getitemid getitemrect getpaneinfo getpanestyle getpanetext 創(chuàng)建一個(gè)狀態(tài)欄,并與狀態(tài)欄對(duì)象相聯(lián)系,同時(shí)初始化字體及高度 創(chuàng)建一個(gè)有附加風(fēng)格的狀態(tài)欄 設(shè)置窗格 i
34、d 號(hào) 設(shè)置窗格文本 獲取給定 id 號(hào)的窗格索引 獲取與索引對(duì)應(yīng)的窗格 id 號(hào) 獲取給定索引的顯示矩形 獲取給定索引的窗格 id 號(hào)、風(fēng)格和寬度 獲取給定窗格風(fēng)格 獲取給定索引的窗格文本 visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 39 4.3.3 狀態(tài)欄操作狀態(tài)欄操作 利用利用mfc appwizardmfc appwizard向?qū)?chuàng)建應(yīng)用程序時(shí),首先在向?qū)?chuàng)建應(yīng)用程序時(shí),首先在cmainframecmainframe類中定義一個(gè)成員變量類中定義一個(gè)成員變量m_wndstatusbarm_wndstatusbar,它是
35、,它是狀態(tài)欄類狀態(tài)欄類cstatusbarcstatusbar的對(duì)象。其次在的對(duì)象。其次在mfcmfc應(yīng)用程序框架的應(yīng)用程序框架的實(shí)現(xiàn)文件實(shí)現(xiàn)文件mainfrm.cppmainfrm.cpp中,為狀態(tài)欄定義一個(gè)靜態(tài)數(shù)組中,為狀態(tài)欄定義一個(gè)靜態(tài)數(shù)組indicatorsindicators,如下所示:,如下所示: static uint indicators = id_separator, /顯示命令功能提示顯示命令功能提示 id_indicator_caps, /顯示大寫(xiě)鎖定鍵狀態(tài)顯示大寫(xiě)鎖定鍵狀態(tài) id_indicator_num, /顯示數(shù)字鎖定鍵狀態(tài)顯示數(shù)字鎖定鍵狀態(tài) id_indicat
36、or_scrl, /顯示滾動(dòng)鎖定鍵狀態(tài)顯示滾動(dòng)鎖定鍵狀態(tài);visual c+程序設(shè)計(jì)與應(yīng)用教程2021/11/25第第4 4章章 菜單、工具欄與狀態(tài)欄菜單、工具欄與狀態(tài)欄 40 這個(gè)全局的提示符數(shù)組這個(gè)全局的提示符數(shù)組indicatorsindicators中的每個(gè)元素中的每個(gè)元素代表狀態(tài)欄上一個(gè)窗格的代表狀態(tài)欄上一個(gè)窗格的idid值,這些值,這些idid在應(yīng)用程序的在應(yīng)用程序的串表資源串表資源string tablestring table中進(jìn)行了說(shuō)明。中進(jìn)行了說(shuō)明。 通過(guò)增加新的通過(guò)增加新的idid標(biāo)識(shí)來(lái)增加用于顯示狀態(tài)信息的標(biāo)識(shí)來(lái)增加用于顯示狀態(tài)信息的窗格。狀態(tài)欄顯示的內(nèi)容由數(shù)組窗格。狀態(tài)欄顯示的內(nèi)容由數(shù)組indicatorsindicators決定,需決定,需要在狀態(tài)欄中顯示的各窗格的標(biāo)識(shí)符、位置以及個(gè)數(shù)要在狀態(tài)欄中顯示的各窗格的標(biāo)識(shí)符、位置以及個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)面源污染治理2025年技術(shù)路徑與政策實(shí)施效果評(píng)估報(bào)告
- 安全規(guī)范試題及答案
- 瑜伽課件培訓(xùn)方案范文
- 工業(yè)互聯(lián)網(wǎng)平臺(tái)射頻識(shí)別(RFID)技術(shù)在智能工廠生產(chǎn)設(shè)備性能提升策略報(bào)告
- 法院執(zhí)行普法培訓(xùn)課件
- 中國(guó)南水北調(diào)工程
- 中國(guó)剪紙英語(yǔ)教學(xué)課件
- 廣西北海市銀海區(qū)2025屆八年級(jí)英語(yǔ)第二學(xué)期期中達(dá)標(biāo)檢測(cè)試題含答案
- 感恩教育班會(huì)
- 制動(dòng)器課件教學(xué)課件
- 橡膠和基材的粘接
- GB/T 10610-2009產(chǎn)品幾何技術(shù)規(guī)范(GPS)表面結(jié)構(gòu)輪廓法評(píng)定表面結(jié)構(gòu)的規(guī)則和方法
- 畢業(yè)離校學(xué)生證遺失證明
- 工傷責(zé)任保險(xiǎn)單
- 智慧停車技術(shù)方案
- 土地整理質(zhì)量評(píng)定表
- 【告知牌】某公司全套重大危險(xiǎn)源告知牌(7頁(yè))
- 中考數(shù)學(xué)復(fù)習(xí)專題二方程與不等式
- 牛津深圳版七年級(jí)下冊(cè)英語(yǔ)作文匯總
- 供應(yīng)商管理庫(kù)存VMI的實(shí)施
- 公司“師帶徒”實(shí)施方案
評(píng)論
0/150
提交評(píng)論