資源描述:
《C++菜單、工具欄和狀態(tài)欄.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第6章菜單、工具欄和狀態(tài)欄本章要點(diǎn):菜單的實(shí)現(xiàn)機(jī)制和創(chuàng)建過程。普通下拉菜單和上下文菜單的創(chuàng)建。工具欄的創(chuàng)建和消息處理過程。狀態(tài)欄的使用。6.1菜單及加速鍵的使用菜單為所有的Windows應(yīng)用程序提供了一致的接口方式,可使用戶直觀地了解并方便地使用應(yīng)用程序所提供的各項(xiàng)功能,是Windows資源中最重要的資源之一。使用加速鍵可使菜單的操作更靈活快捷,兩種資源往往密不可分,菜單通常由以下部分組成:(1)窗口主菜單欄(位于窗口的標(biāo)題欄下方,其菜單項(xiàng)通常為下拉式菜單);(2)下拉式菜單框;(3)菜單項(xiàng)熱鍵標(biāo)識;(4)菜單項(xiàng)加速鍵標(biāo)識;(5)菜單項(xiàng)分隔線。此外
2、,菜單項(xiàng)前常有選中標(biāo)志以標(biāo)識其是否被選中。6.1.1菜單概述1.菜單及加速鍵菜單作為Windows圖形用戶界面中窗口的重要組成部分,可以方便地操作應(yīng)用程序。Windows中的菜單主要分為兩種:一種是附著在框架窗口和對話框的菜單條上的下拉菜單,另一種是彈出式的上下文菜單。菜單是應(yīng)用程序中最常見的元素。大量命令的調(diào)用都是通過選擇菜單實(shí)現(xiàn)的。在使用AppWizard生成SDI或MDI應(yīng)用程序框架時(shí),AppWizard將自動(dòng)生成標(biāo)準(zhǔn)的應(yīng)用框架菜單資源(IDR_MAINFRAME)和菜單處理函數(shù)代碼。為了滿足實(shí)際需要,有時(shí)需要對默認(rèn)菜單進(jìn)行修改。6.1.1菜
3、單概述2.CMenu類菜單類(CMenu類)提供了許多處理菜單和菜單項(xiàng)的方法,這些方法分別是菜單構(gòu)造方法、菜單操作方法、菜單項(xiàng)操作方法和虛擬方法等。可以通過下列三種方法獲得指向CMenu對象的指針:(1)利用CWnd::GetMenu()函數(shù)獲取指向指定菜單的指針。(2)利用CWnd::GetSystemMenu()函數(shù)獲取指向系統(tǒng)菜單的指針。(3)利用CMenu::LoadMenu()函數(shù)從應(yīng)用程序的可執(zhí)行文件裝載菜單資源,并將它連接到CMenu對象上。6.1.1菜單概述在獲得菜單指針之后,就可以利用CMenu成員函數(shù)在運(yùn)行時(shí)動(dòng)態(tài)修改菜單(用戶利
4、用資源編輯器只能靜態(tài)修改菜單資源)。CMenu類的成員函數(shù)AppendMenu()、InsertMenu()、ModifyMenu()和RemoveMenu()分別用于添加、插入、修改和刪除指定菜單項(xiàng)。標(biāo)識菜單項(xiàng)的方法有兩種:一是用ID,二是用位置索引。如果菜單由彈出式菜單構(gòu)成,則通過成員函數(shù)GetSubMenu()獲取該菜單的一個(gè)彈出式菜單的CMenu對象。成員函數(shù)TracePopupMenu()在一個(gè)POINT結(jié)構(gòu)指定的位置顯示一個(gè)浮動(dòng)的彈出式菜單,并跟蹤該菜單上的選擇操作。浮動(dòng)的彈出式菜單可以出現(xiàn)在屏幕上的任何地方。6.1.2菜單消息及消息映
5、射在MFC消息映射中,包含兩個(gè)菜單消息:WM_COMMAND和UPDATE_COMMAND_UI。(1)WM_COMMAND消息。當(dāng)用戶選中了某個(gè)菜單項(xiàng),激活菜單的加速鍵或選中了相應(yīng)的工具欄按鈕時(shí),會(huì)發(fā)出消息標(biāo)識符為WM_COMMAND的命令消息。其消息映射為ON_COMMAND,ON_COMMAND消息映射的映射方式是:ON_COMMAND(菜單項(xiàng)的標(biāo)識ID,消息處理函數(shù))(2)UPDATE_COMMAND_UI消息。UPDATE_COMMAND_UI是MFC所特有的,應(yīng)用程序不一定要處理該消息,如果用戶想根據(jù)應(yīng)用程序的當(dāng)前狀態(tài)對菜單項(xiàng)進(jìn)行激活、
6、使菜單項(xiàng)無效,或給菜單項(xiàng)添加被選中標(biāo)記等操作,要添加該消息6.1.3上下文菜單Windows的一個(gè)重要特征是鼠標(biāo)右鍵功能。當(dāng)用戶單擊鼠標(biāo)右鍵時(shí),系統(tǒng)會(huì)彈出一個(gè)浮動(dòng)菜單(稱為上下文菜單)供用戶選擇。通過該菜單,用戶可以方便、快捷地進(jìn)行一些操作。應(yīng)用程序在響應(yīng)彈出鼠標(biāo)右鍵消息時(shí),調(diào)用LoadMenu()函數(shù)裝載菜單資源,然后調(diào)用GetSubMenu()成員函數(shù)獲取指向彈出式菜單的CMenu指針,最后調(diào)用TrackPopupMenu()成員函數(shù)顯示該浮動(dòng)彈出式菜單,并跟蹤用戶的選擇。6.1.5改變菜單的顯示狀態(tài)有時(shí)候,需要根據(jù)應(yīng)用程序的內(nèi)部狀態(tài)來對菜單項(xiàng)
7、作相應(yīng)的改變。例如,假設(shè)在應(yīng)用程序的Edit菜單中有一個(gè)Paste選項(xiàng)。當(dāng)沒有什么東西可粘貼時(shí),Paste就應(yīng)當(dāng)是無效狀態(tài)。又如,為了標(biāo)識系統(tǒng)正處于何種狀態(tài),可對菜單項(xiàng)進(jìn)行標(biāo)記;為了提示用戶,應(yīng)當(dāng)將菜單項(xiàng)置為高亮度等。為了使應(yīng)用程序的狀態(tài)與菜單項(xiàng)保持同步,可以采用MFC提供的方法。即每當(dāng)彈出式菜單第一次顯示時(shí),都會(huì)發(fā)送特殊的更新命令UI消息,該消息通常傳遞給與菜單項(xiàng)相聯(lián)系的相應(yīng)對象。通過編輯與菜單項(xiàng)相聯(lián)系的UPDATE_COMMAND_UI消息所映射的函數(shù)即可完成對菜單項(xiàng)狀態(tài)的設(shè)置。此外,還可以用CMenu::GheckMenuItem()和Ena
8、bleMenuItem()進(jìn)行處理。6.2工具欄的使用6.2.1工具欄概述工具欄是一系列工具按鈕的組合,借助它們可以提高用