資源描述:
《第6章菜單、工具欄和狀態(tài)欄.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第6章菜單、工具欄和狀態(tài)欄編程菜單、工具欄和狀態(tài)欄是一個(gè)完善的Windows應(yīng)用程序的重要組成部分(但不是必需的部分)。在Windows寫(xiě)字板應(yīng)用程序中,菜單欄、工具欄、狀態(tài)欄及其所包含的元素6.1菜單及其相關(guān)資源的使用菜單是Windows與用戶交互的標(biāo)準(zhǔn)接口之一,Windows的大多數(shù)應(yīng)用程序都提供了菜單操作。當(dāng)一個(gè)菜單項(xiàng)被選中時(shí),它發(fā)出一個(gè)命令消息,從而引發(fā)相應(yīng)的消息處理函數(shù)的執(zhí)行。6.1.1菜單的種類及開(kāi)發(fā)步驟在Windows窗口中,菜單有兩種標(biāo)準(zhǔn)風(fēng)格:下拉菜單和彈出菜單(也稱上下文菜單)。下拉菜單:一般在應(yīng)用程序窗口的頂部羅列了一行按類別排列的菜單。如果用戶選擇了某一類別,就
2、會(huì)顯示一個(gè)下拉式菜單。圖6.1所示即為下拉菜單。彈出菜單:一般在應(yīng)用程序窗口區(qū)域的中間彈出顯示,在應(yīng)用程序工作區(qū)域上面處于自由浮動(dòng)狀態(tài)。在寫(xiě)字板輸入窗口中,單擊鼠標(biāo)右鍵,即出現(xiàn)彈出式菜單,如圖6.2所示。6.1.2菜單的創(chuàng)建與編輯在VisualC++6.0中,使用MFCAppWizard生成的文檔/視圖結(jié)構(gòu)的應(yīng)用程序,系統(tǒng)已為框架創(chuàng)建了一個(gè)標(biāo)準(zhǔn)的主菜單,包括文件、編輯、視圖、窗口幫助等標(biāo)準(zhǔn)菜單,定義了各菜單項(xiàng)的ID及相應(yīng)的命令處理函數(shù)。一般只需要通過(guò)菜單資源編輯器,在已有主菜單的基礎(chǔ)上添加、設(shè)計(jì)需要的菜單項(xiàng)即可。6.1.3菜單消息MFC程序可以處理兩種菜單消息:WM_COMMAND:
3、為菜單命令消息,當(dāng)選擇菜單項(xiàng)、工具欄按鈕或加速鍵之一會(huì)發(fā)出菜單命令消息,MFC依據(jù)一定的消息傳遞途徑將消息傳遞給相應(yīng)的處理函數(shù)進(jìn)行處理,如果在消息傳遞途徑的消息映射表中找不到相應(yīng)的處理函數(shù),該菜單項(xiàng)或按鈕會(huì)被禁止使用。UPDATE_COMMAND_UI:為菜單更新消息,處理菜單狀態(tài)的動(dòng)態(tài)變化。如希望根據(jù)程序的執(zhí)行狀態(tài),激活或禁用某些菜單項(xiàng),設(shè)置選中標(biāo)記,或更改菜單項(xiàng)文字等,就要定義這一消息處理函數(shù)。6.1.4菜單命令消息的處理定義好菜單項(xiàng)及其ID后,就需要為菜單命令添加響應(yīng)函數(shù)。實(shí)現(xiàn)方法是借助ClassWizard,在需要響應(yīng)菜單命令的類的消息映射表中增加一個(gè)入口,即定義一個(gè)命令消息
4、ON_COMMAND宏。下面就以為“圓形”菜單命令項(xiàng)添加WM_COMMAND消息處理函數(shù)為例,講解處理菜單消息的實(shí)現(xiàn)過(guò)程。(具體內(nèi)容請(qǐng)參照本書(shū))6.1.5菜單更新消息的處理一般情況下,菜單項(xiàng)具有不止一種狀態(tài),經(jīng)常需要根據(jù)應(yīng)用的內(nèi)部狀態(tài)來(lái)對(duì)菜單項(xiàng)作相應(yīng)的改變。(具體內(nèi)容請(qǐng)參照本書(shū))6.1.6為菜單項(xiàng)設(shè)置快捷鍵快捷鍵的主要作用就是在選擇菜單命令時(shí),不用鼠標(biāo)而用事先定義的組合鍵。如在Word軟件中,用戶可以使用“Ctrl+C”組合鍵復(fù)制文本,而使用“Ctrl+V”組合鍵粘貼文本。這樣做的好處就是熟練操作應(yīng)用程序的用戶可以不用鼠標(biāo),用鍵盤(pán)直接同應(yīng)用程序?qū)崿F(xiàn)交互。下面就對(duì)程序“Ch6Demo1
5、”新創(chuàng)建的菜單項(xiàng)“圓形”和“矩形”分別添加快捷鍵“Ctrl+Y”、“Ctrl+J”。6.1.7彈出菜單的創(chuàng)建與使用彈出菜單一般在單擊鼠標(biāo)右鍵時(shí)出現(xiàn),在應(yīng)用程序工作區(qū)域上面處于自由浮動(dòng)狀態(tài),也稱為上下文菜單。與下拉菜單的最大不同是,彈出菜單需要用戶手工編程動(dòng)態(tài)加載。下面就為前面創(chuàng)建的“Ch6Demo1”程序創(chuàng)建一個(gè)繪圖操作的彈出菜單,在單擊鼠標(biāo)右鍵時(shí),菜單彈出,菜單顯示的內(nèi)容與“繪圖”下拉菜單完全相同。6.2工具欄的使用工具欄是一個(gè)包含一個(gè)或多個(gè)命令按鈕的窗口,一般情況下附著在窗口客戶區(qū)上方菜單欄下面,也可作為一個(gè)浮動(dòng)的小窗口。工具欄為菜單命令提供可視化的快捷操作方式,模擬大部分的菜單
6、行為。6.2.1工具欄的創(chuàng)建在使用MFCAppWizard創(chuàng)建基于文檔/視圖結(jié)構(gòu)的MFC應(yīng)用程序項(xiàng)目時(shí),如前面創(chuàng)建的SDI程序“Ch6Demo1”,在應(yīng)用向?qū)У腗FCAppWizardStep4的時(shí)候,默認(rèn)選中了“Dockingtoolbar”,(具體內(nèi)容請(qǐng)參照本書(shū))6.2.2編輯工具欄創(chuàng)建了工具欄后,就需要編輯工具欄資源。工具欄資源由一組按鈕組成,每個(gè)按鈕是一個(gè)16色位圖圖標(biāo),工具欄編輯器提供一個(gè)簡(jiǎn)單的位圖編輯器,點(diǎn)擊某個(gè)圖標(biāo)即可編輯它。6.2.3工具欄命令處理與菜單命令項(xiàng)相同,MFC程序可以處理兩種工具欄按鈕消息:命令消息WM_COMMAND和更新消息UPDATE_COMMAND
7、_UI。通過(guò)ClassWizard可以方便地為工具按鈕添加WM_COMMAND和UPDATE_COMMAND_UI消息映射和消息處理函數(shù)。其實(shí)現(xiàn)過(guò)程與菜單項(xiàng)完全相同,6.2.4工具欄類CToolBar的簡(jiǎn)單介紹在MFC中,CToolBar類包攬了創(chuàng)建工具欄的主要工作。類CToolBar提供了帶有位圖按鈕和可選分隔符的工具欄。工具欄按鈕可以是下壓式按鈕、復(fù)選按鈕或單項(xiàng)按鈕。CToolBar對(duì)象通常被嵌入派生于類CFrameWnd或CMDIFrameWnd的框