資源描述:
《chapter6—菜單工具欄和狀態(tài)欄.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第10章菜單、快捷鍵和字符串表本章重點菜單的使用用戶與應(yīng)用程序的交互通常是從菜單欄中選擇命令或用鍵盤加速器的形式,因此,菜單和加速器的資源在VC++編程中是很重要的。10.1菜單簡介菜單一般存放在資源腳本中,在程序運行時才調(diào)用,一個菜單項一般有兩個必要的部分,它們分別是字符串名如file和整數(shù)標(biāo)識符,一般來說,菜單的標(biāo)識符ID在資源的頭文件(Resource.h)中定義,如:#defineIDM_MENU1129其中,前綴IDM指明是菜單項,在菜單資源創(chuàng)建后,必須將它鏈接到類中,通過提供類方法來處理每個菜單項。210.1.2菜單結(jié)構(gòu)菜單模板
2、用一種很簡單的結(jié)構(gòu)在資源腳本文件中定義,下面就是一個菜單資源模板IDR_MENU1MENUDISCARDABLEBEGINPOPUP"&File"http://菜單名BEGIN//菜單File開始MENUITEM"&Voice",IDC_VOICE_MENU//菜單項MENUITEM"&Show",IDC_SHOW_MENU//菜單項MENUITEMSEPARATOR//分隔線MENUITEM"&Exit",IDC_EXIT_MENU//菜單項END//菜單File結(jié)束POPUP"&Help"http://定義Help菜單BEGINMENUITEM"&Abou
3、t",IDC_ABOUT_MENU//菜單項END//菜單Help定義結(jié)束END310.1.3CMenu類CMenu類提供了許多處理菜單和菜單項的方法,它們分別是構(gòu)造方法、菜單操作方法、菜單項操作方法和虛擬方法。構(gòu)造方法是用來建立Windows菜單并在運行時將它們附加到CMenu對象上。4菜單操作方法中只有兩個類方法用來處理菜單的頂層操作DeleteMenu()TrackPopupMenu()刪除某個特定的菜單項(包括附屬的級連菜單項)在一個POINT結(jié)構(gòu)所指定的位置顯示一個快捷菜單菜單項操作特定的CMenu類方法510.2菜單創(chuàng)建及其響應(yīng)
4、示例10.2.1應(yīng)用程序的主窗口布局主窗口標(biāo)題為ApplicationofMenu。在主窗口中有三個按鈕,分別為Voice、Show和Exit單擊File菜單,出現(xiàn)一個下拉菜單,單擊Vioce選項,可聽到PC機喇叭發(fā)出蜂鳴聲。單擊Show,則顯示一個信息“ThisisaSampleofaddingmenu”,同樣,若在窗口中單擊相應(yīng)的按鈕,也會有同樣的效果6應(yīng)用程序的可視化編程部分1對話框中按鈕的設(shè)計對象IDCaption命令按鈕IDC_VOICE_BUTTON&Voice命令按鈕IDC_SHOW_BUTTON&Show命令按鈕IDC_EX
5、TT_BUTTON&Exit2對話框中的菜單的設(shè)計(a)選擇Insert菜單中的Resource命令,顯示InsertResource對話框(b)選擇Menu項使其高亮化(c)單擊New按鈕,在資源文件Menu.rc中增加了一項資源,即一個菜單710.2.5給菜單連接一個類菜單實際上是一個對象,在具體的編程中我們必須給它連接一個類。因為這個菜單是對話框中的一個資源,它將調(diào)用對話框中一些成員,所以把這個菜單與對話框的派生類CMenuDlg相連接。8連接菜單和應(yīng)用程序的主窗口菜單IDR_MENU1連接了一個類,這只是表示該菜單可以調(diào)用程序中這個
6、類的成員函數(shù)和成員變量,此時在應(yīng)用程序的主窗口中仍然沒有顯示菜單,這是因為菜單還沒有和應(yīng)用程序主窗口連接起來。下面介紹菜單與應(yīng)用程序的主窗口對話框(即IDD_MENU_DIALOG)的連接。(1)在Menu的工作區(qū)的ResourceView選項卡中,雙擊Dialog文件夾中的IDD_MENU_DIALOG,此時彈出IDD_MENU_DIALOG對話框。(2)在對話框的任何一個空白域,單擊鼠標(biāo)右鍵,然后在彈出的快捷菜單中選擇Properties命令,在對話框中的Menu組合框中選擇IDD_MENU19應(yīng)用程序的代碼編程1.給菜單File的Ex
7、it選項編寫代碼voidCMenuDlg::OnExitMenu(){//TODO:在此處添加自己的命令句柄代碼//代碼編寫開始OnOK();//代碼編寫結(jié)束}102給File菜單的Voice項連接代碼voidCMenuDlg::OnVioceMenu(){//TODO:在此處添加自己的命令句柄代碼//代碼編寫開始MessageBeep((WORD)-1);DWORDiTime=GetCurrentTime()while(GetCurrentTime()8、essageBeep()函數(shù)使計算機的喇叭發(fā)出蜂鳴聲。然后間隔500毫秒,再發(fā)出一聲蜂鳴。113給File菜單的Show項連接代碼voidCMenuDlg::OnShowMenu