資源描述:
《菜單、工具欄和狀態(tài)欄》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第6章菜單、工具欄和狀態(tài)欄6.1菜單6.2工具欄6.3狀態(tài)欄1第6章菜單、工具欄和狀態(tài)欄6.1菜單6.2工具欄6.3狀態(tài)欄26.1菜單(1of11)對于菜單的顯示都遵循下列一些規(guī)則:若某菜單項(xiàng)標(biāo)題后有“…”,那么在點(diǎn)擊某菜單項(xiàng)會(huì)彈出一對話框。若某項(xiàng)菜單有子菜單,那么在該菜單項(xiàng)文本后有“?”。菜單項(xiàng)需要助記符,用括號(hào)將帶下劃線的字母括起來。助記符與Alt構(gòu)成一個(gè)組合鍵,當(dāng)按住“Alt”鍵不放,再敲擊該字母時(shí),對應(yīng)的菜單項(xiàng)就會(huì)被選中。若某項(xiàng)菜單需要快捷鍵的支持,則一般將其列在相應(yīng)菜單項(xiàng)文本之后。任何時(shí)候按下快捷鍵,相應(yīng)的菜單命令都會(huì)被執(zhí)行。圖6.1File菜單36.1菜單(2o
2、f11)6.1.1用編輯器設(shè)計(jì)菜單編輯菜單在菜單的空位置上雙擊鼠標(biāo)左鍵,則出現(xiàn)它的屬性對話框,如圖。圖6.2菜單編輯器菜單的空位置圖6.3菜單屬性對話框46.1菜單(3of11)56.1菜單(4of11)需要注意的是:當(dāng)菜單項(xiàng)的屬性中選中了Pop_up(該菜單包含子菜單)時(shí),對話框中ID、Separator和Prompt項(xiàng)無效。增加新的菜單項(xiàng)后,用戶可以用鼠標(biāo)將菜單項(xiàng)拖到其他位置,而當(dāng)菜單項(xiàng)位置改變時(shí),其屬性并不改變。菜單項(xiàng)被拖動(dòng)的位置圖6.4拖動(dòng)菜單項(xiàng)圖6.5添加的菜單項(xiàng)66.1菜單(5of11)菜單命令的消息映射[例Ex_Mmenu]“成績輸入”菜單項(xiàng)的映射。(1)進(jìn)入
3、MFCClassWizard對話框,切換到MessageMaps頁面。(2)從“Classname”列表中選擇CMainFrame,在IDs列表中選擇ID_SCORE_IN,然后在Messages框中選擇COMMAND消息,如圖。圖6.6消息的選擇76.1菜單(6of11)(3)單擊[AddFunction]按鈕或雙擊COMMAND消息,輸入成員函數(shù)的名稱。如圖6.7所示。(4)單擊[OK]。選擇新增加的成員函數(shù),單擊[EditCode]按鈕(或直接在函數(shù)名雙擊鼠標(biāo)左鍵),就可以在此成員函數(shù)中添加一些代碼。例如:voidCMainFrame::OnScoreIn(){//T
4、ODO:AddyourcommandhandlercodehereAfxMessageBox("現(xiàn)在就輸入成績嗎?");}(5)編譯并運(yùn)行。在應(yīng)用程序的頂層菜單上,單擊“成績輸入”菜單項(xiàng)或按Alt+S組合鍵,如圖6.8所示。圖6.7添加成員函數(shù)對話框圖6.8菜單命令執(zhí)行的結(jié)果86.1菜單(7of11)6.1.2使用鍵盤快捷鍵(1)先打開上例的項(xiàng)目工作區(qū)窗口中Accelerator的資源項(xiàng),雙擊IDR_MAINFRAME,如圖。圖6.9示例Ex_Sdi的加速鍵資源最下端的空行96.1菜單(8of11)(2)要建立一新的加速鍵,雙擊加速鍵列表的最下端的空行,如圖6.10,其中可
5、設(shè)置的屬性如表6.2。(3)在上述對話框中,選擇ID_SCORE_IN作為要設(shè)定快捷鍵的ID號(hào),單擊[NextKeyTyped],按下Ctrl+1作為此加速鍵的鍵值。圖6.10“AccelProperities”對話框106.1菜單(9of11)6.1.3使用快捷菜單——右鍵菜單用資源編輯器和MFC庫的CMenu::TrackPopupMenu函數(shù)可以創(chuàng)建快捷菜單。CMenu::TrackPopupMenu函數(shù)原型如下:BOOLTrackPopupMenu(UINTnFlags,intx,inty,CWnd*pWnd,LPCRECTlpRect=NULL);其中:x和y表示
6、菜單頂端(一般為左上角)的水平坐標(biāo)和垂直坐標(biāo)。pWnd表示彈出菜單的窗口。lpRect是一個(gè)RECT結(jié)構(gòu)或CRect對象指針,表示一個(gè)矩形區(qū)域,不在該區(qū)域單擊鼠標(biāo)時(shí),則彈出菜單消失;當(dāng)lpRect為NULL時(shí),若擊在菜單外面,菜單立刻消失。116.1菜單(10of11)[例Ex_Menu]創(chuàng)建彈出菜單。(1)選擇“Insert”菜單?“Resource”命令,為應(yīng)用程序添加一個(gè)新的菜單資源。(2)用菜單編輯器,為該菜單資源中的頂層菜單的第一項(xiàng)加一任意標(biāo)題(實(shí)際上該標(biāo)題無任何作用),在此菜單項(xiàng)下依次添加如下表所示的菜單項(xiàng)。(3)將此菜單資源ID號(hào)改為IDR_MYFLOATME
7、NU(默認(rèn)的ID號(hào)為IDR_MENU1)。(4)按Ctrl+W快捷鍵打開ClassWizard,將出現(xiàn)一對話框,詢問是“選擇一個(gè)已存在的類”,還是“創(chuàng)建一個(gè)新類”。選擇“選擇一個(gè)已存在的類”項(xiàng)并選定CMainFrame類。126.1菜單(11of11)(5)在CMainFrame類中,選擇上表中所列的菜單ID,雙擊COMMAND消息。這里僅為菜單ID_MENU_SCOREIN映射COMMAND消息,添加代碼:voidCMainFrame::OnMenuScorein(){AfxMessageBox("現(xiàn)在就輸入成績