資源描述:
《chap5菜單、工具欄與狀態(tài)欄.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、第5章菜單、工具欄和狀態(tài)欄5.1菜單5.2工具欄5.3狀態(tài)欄5.1菜單菜單的顯示規(guī)則:若單擊菜單項后,將彈出一個對話框,那么在該菜單項文本后有“…”。若某菜單有子菜單,那么在該菜單項文本后有“?”若菜單項需要助記符,則用括號將帶下劃線的字母括起來。助記符與Alt構成一個組合鍵?;蛟诓藛未蜷_時,直接按助記符鍵,對應的菜單項也會被選中。若某項菜單需要快捷鍵的支持,則一般將其列在相應菜單項文本之后。25.1菜單頂層菜單下拉菜單35.1.1用編輯器設計菜單1.編輯菜單子菜單的空位置保存可見按鈕頂層菜單的空位置45.1.1
2、用編輯器設計菜單1.編輯菜單單擊“測試”菜單項下方的空位置,在菜單項屬性對話框中,輸入標題“切換菜單(&D)”,在ID框輸入該菜單項的資源標識符:ID_TEST_CHANGE。關閉菜單項屬性對話框,將新添加的菜單項拖放到“查看”和“幫助”菜單項之間,結果如圖所示。需要說明的是,菜單項位置改變后,其屬性并沒改變。52.菜單命令的消息映射(1)打開MFCClassWizard對話框,并自動切換到MessageMaps頁面。從“Classname”列表中選擇CMainFrame,在IDs列表中選擇ID_TEST_CHA
3、NGE,然后在Messages框中選擇COMMAND消息。5.1.1用編輯器設計菜單62.菜單命令的消息映射(2)單擊[AddFunction]按鈕或雙擊COMMAND消息,出現“AddMemberFunction”對話框以輸入成員函數的名稱。系統(tǒng)默認的函數名為OnTestChange,該函數是對菜單項ID_TEST_CHANGE(“測試”→“切換菜單”)的映射。5.1.1用編輯器設計菜單72.菜單命令的消息映射(3)單擊[OK]按鈕,在ClassWizard的“Memberfunctions”列表中將列出新增加
4、的成員函數。選擇此函數,單擊[EditCode]按鈕(或直接在函數名雙擊鼠標),在此成員函數中添加下列代碼:voidCMainFrame::OnTestChange(){//TODO:AddyourcommandhandlercodehereAfxMessageBox("現在就切換嗎?");}5.1.1用編輯器設計菜單8(4)編譯并運行。在應用程序的頂層菜單上,單擊“測試”菜單項,然后將鼠標移動到彈出的子菜單項“切換菜單”上,則結果如圖所示,此時狀態(tài)欄上顯示該菜單項的提示信息,該信息就是在前圖的菜單項屬性對話框“
5、提示”框中設置的內容。單擊“切換菜單”,則彈出一個消息對話框,顯示內容“現在就切換嗎?”。5.1.1用編輯器設計菜單95.1.2使用鍵盤快捷鍵例:為前面菜單項ID_TEST_CHANGE定義鍵盤快捷鍵(1)展開項目工作區(qū)窗口中Accelerator的資源項,雙擊IDR_MAINFRAME,出現加速鍵資源列表。下端的空行105.1.2使用鍵盤快捷鍵(2)建立一個新的加速鍵時,只要雙擊加速鍵列表的最下端的空行,彈出如圖所示的“AccelProperties”(加速鍵屬性)對話框,其中可設置的屬性如表所示115.1.2
6、使用鍵盤快捷鍵(3)在加速鍵屬性對話框中,先選擇在Ex_SDI應用程序菜單資源添加的“切換菜單”菜單項ID_TEST_CHANGE作為要聯(lián)用的加速鍵的ID標識符,然后單擊[下一鍵]按鈕,并按下Ctrl+1作為此加速鍵的鍵值。此外,還需在相應的菜單項文本后面添加加速鍵內容。例如,可將ID_TEST_CHANGE菜單項的標題改成“切換菜單(&C)tCtrl+1”。(4)編譯運行并測試。當程序運行后,按Ctrl+1鍵將執(zhí)行相應的菜單命令。125.1.3菜單的編程控制CMenu類1.創(chuàng)建菜單BOOLCreateMenu
7、();//產生一個空菜單BOOLCreatePopupMenu();//產生一個空的彈出式子菜單2.裝入菜單將菜單從資源裝入應用程序中BOOLLoadMenu(LPCTSTRlpszResourceName);//lpszResourceName為菜單資源名稱BOOLLoadMenu(UINTnIDResource);//nIDResource為菜單資源ID標識符。135.1.3菜單的編程控制3.添加菜單項AppendMenu函數:將菜單項添加在菜單的末尾處InsertMenu函數:在指定位置處插入菜單項,后面的
8、菜單項依次下移BOOLAppendMenu(UINTnFlags,UINTnIDNewItem=0,LPCTSTRlpszNewItem=NULL);//lpszNewItem為新菜單項的內容BOOLAppendMenu(UINTnFlags,UINTnIDNewItem,constCBitmap*pBmp);//pBmp用于菜單項的位圖指針BOOLInsertMenu(