資源描述:
《菜單工具欄與狀態(tài)欄.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章菜單、工具欄與狀態(tài)欄VisualC++程序設(shè)計與應(yīng)用教程4.1菜單4.2工具欄4.3狀態(tài)欄4.4應(yīng)用實例24.1菜單4.1.1菜單的類型常見菜單有3種:主菜單、彈出菜單和快捷菜單。1.主菜單指出現(xiàn)在應(yīng)用程序主窗口或最上層窗口的菜單。通常對應(yīng)有一個彈出菜單作為它的子菜單。32.彈出菜單指選擇主菜單或一個菜單項時彈出的子菜單。3.快捷菜單當(dāng)右擊某個界面對象時,通常會彈出快捷菜單,它出現(xiàn)在鼠標(biāo)箭頭的位置,快速展示當(dāng)前對象可用的命令功能。4菜單設(shè)計一般需要經(jīng)過下面兩步:(1)使用菜單編輯器編輯菜單資源;(2)使用ClassWizard進行消息映
2、射,編輯成員函數(shù),完成菜單所要實現(xiàn)的功能。54.1.2編輯菜單使用菜單編輯器來編輯菜單資源。雙擊ResourceView視圖中的Menu菜單資源,打開菜單編輯器。61.插入新菜單項在當(dāng)前空白菜單項位置插入選定窗口中的空白菜單項后按回車鍵(或雙擊空白菜單項),系統(tǒng)彈出菜單屬性對話框。在某菜單項前插入選中該菜單項并按Ins鍵,再雙擊該空白菜單項進行編輯。72.屬性對話框的設(shè)置用于輸入菜單項的標(biāo)識符(ID)、標(biāo)題(Caption)和菜單項在狀態(tài)欄上顯示的提示(Prompt)信息等。菜單項的標(biāo)識符(ID)菜單項在狀態(tài)欄上顯示的提示信息標(biāo)題893.調(diào)整
3、菜單項位置選中某菜單項將其拖至適當(dāng)位置。4.刪除菜單項用鼠標(biāo)單擊菜單項或用上、下、左、右光標(biāo)鍵選擇菜單項,然后單擊Cut按鈕或按Del鍵刪除。10【例4.1】編寫一個單文檔應(yīng)用程序MyDraw,在菜單欄中增加一個“繪圖”主菜單,并在其中添加“矩形”和“橢圓”兩個菜單項。114.1.3建立消息映射在上例中僅添加了菜單,并沒有實現(xiàn)菜單的功能,即沒有對應(yīng)的命令處理函數(shù)與菜單項對應(yīng),因此,添加的菜單項是灰色的,即處于當(dāng)前不可用狀態(tài)。添加新的菜單項后,還應(yīng)該為菜單項指定一個處理函數(shù),即利用ClassWizard類向?qū)砑右粋€消息處理函數(shù)。12【例4.2
4、】為例4.1中增加的菜單項添加消息處理函數(shù)。134.1.4菜單的有效控制一般情況下,菜單項都不止一種狀態(tài)。例如,在沒有選擇任何內(nèi)容時,Edit菜單下的Copy、Cut等菜單項是無效的(灰色顯示)。有時,我們還會看到,在菜單項旁邊可能還會有檢查標(biāo)記,表示它是選中的還是不選中的。比如,在Word的視圖菜單項下,當(dāng)用戶選用【網(wǎng)格線】或【標(biāo)尺】時,相應(yīng)菜單項前會出現(xiàn)一個“√”。MFC通過消息映射機制和CCmdUI類更新菜單項的顯示。14在類向?qū)lassWizard的MessageMap標(biāo)簽中,如果選擇一個菜單ID,在Messages列表框中就會出現(xiàn)
5、以下兩項:COMMANDUPDATE_COMMAND_UI其中UPDATE_COMMAND_UI是更新命令用戶接口消息,專門用于處理菜單項和工具條按鈕的更新。15【例4.3】為例4.2的程序MyDraw添加更新用戶界面的消息處理函數(shù),使程序啟動時菜單項【橢圓】處于不可用狀態(tài),當(dāng)用戶單擊【矩形】菜單項后,在菜單項前顯示“√”標(biāo)記,并使【橢圓】菜單項變?yōu)榭捎谩?64.1.5快捷菜單為應(yīng)用程序創(chuàng)建快捷菜單主要有以下兩種方法。1.使用ComponentGallery創(chuàng)建快捷菜單ComponentGallery(組件畫廊)是一個組件庫,它保存著可以共享
6、或重用的代碼。這些代碼包括由VisualC++自帶的組件和從用戶工程中增加到Gallery中去的用戶自定義組件。17【例4.4】為例4.3中的應(yīng)用程序MyDraw增加一個快捷菜單。程序運行后,用戶在視圖窗口中右擊,彈出一個快捷菜單,顯示主菜單“繪圖”下的所有菜單項??旖莶藛?82.使用TrackPopupMenu()函數(shù)創(chuàng)建快捷菜單使用菜單資源編輯器和CMenu::TrackPopupMenu()函數(shù)來創(chuàng)建右鍵快捷菜單。CMenu::TrackPopupMenu函數(shù)的原型為:BOOLTrackPopupMenu(UINTnFlags,intx
7、,inty,CWnd*pWnd,LPCRECTlpRect=NULL);該函數(shù)的功能是顯示一個右鍵快捷菜單。其中,nflags表示屏幕位置標(biāo)志(見下表)。x、y分別表示菜單的水平坐標(biāo)和頂端的垂直坐標(biāo);pWnd表示彈出菜單的窗口,包括全部的WM_COMMAND消息;lpRect表示一個矩形域,當(dāng)單擊這個矩形域時菜單不消失。19參數(shù)nflags的含義20【例4.5】使用TrackPopupMenu()函數(shù)創(chuàng)建例4.3中的快捷菜單。214.1.6創(chuàng)建動態(tài)菜單動態(tài)創(chuàng)建菜單分為以下3個步驟。(1)利用CreateMenu()函數(shù)創(chuàng)建一個空的彈出式菜單,
8、該函數(shù)的原型為:HMENUCreateMenu()該函數(shù)沒有參數(shù),它的返回值是一個菜單句柄。(2)調(diào)用AppendMenu()或InsertMenu()函數(shù)在菜單中