第十二章 菜單類及其應(yīng)用 清華大學(xué)VC++課件_第1頁
第十二章 菜單類及其應(yīng)用 清華大學(xué)VC++課件_第2頁
第十二章 菜單類及其應(yīng)用 清華大學(xué)VC++課件_第3頁
第十二章 菜單類及其應(yīng)用 清華大學(xué)VC++課件_第4頁
第十二章 菜單類及其應(yīng)用 清華大學(xué)VC++課件_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2022-1-121 2022-1-1222022-1-1232022-1-1242022-1-125,F(xiàn)菜單是用戶與應(yīng)用程序交互的最常用手段。菜單是用戶與應(yīng)用程序交互的最常用手段。F菜單存放在資源腳本中,在程序運(yùn)行時(shí)調(diào)用。菜單存放在資源腳本中,在程序運(yùn)行時(shí)調(diào)用。F一個(gè)菜單項(xiàng)必須包含兩部分一個(gè)菜單項(xiàng)必須包含兩部分: :菜單項(xiàng)名稱菜單項(xiàng)名稱字符串構(gòu)成字符串構(gòu)成, ,例如:例如:filefile菜單項(xiàng)標(biāo)識(shí)符菜單項(xiàng)標(biāo)識(shí)符IDID整數(shù)值,可用整數(shù)常量表示整數(shù)值,可用整數(shù)常量表示F菜單標(biāo)識(shí)符菜單標(biāo)識(shí)符IDID在資源的頭文件在資源的頭文件Resource.hResource.h中定中定義,前綴義,前綴ID

2、MIDM指明是菜單項(xiàng),如:指明是菜單項(xiàng),如:# #define IDM_MENU1 129define IDM_MENU1 129F在菜單資源,必須鏈接到類中,通過提供類方在菜單資源,必須鏈接到類中,通過提供類方法來處理每個(gè)菜單項(xiàng)。法來處理每個(gè)菜單項(xiàng)。2022-1-126IDR_MENU1 MENU DISCARDABLE IDR_MENU1 MENU DISCARDABLE BEGINBEGIN POPUP &FilePOPUP &File /定義定義FileFile菜單菜單 BEGINBEGIN /菜單菜單FileFile定義開始定義開始 MENUITEM &Voi

3、ce, IDC_VOICE_MENU MENUITEM &Voice, IDC_VOICE_MENU /菜單項(xiàng)菜單項(xiàng) MENUITEM &Show, IDC_SHOW_MENU MENUITEM &Show, IDC_SHOW_MENU /菜單項(xiàng)菜單項(xiàng) MENUITEM SEPARATORMENUITEM SEPARATOR /分隔線分隔線 MENUITEM &Exit, IDC_EXIT_MENU MENUITEM &Exit, IDC_EXIT_MENU /菜單項(xiàng)菜單項(xiàng) ENDEND /菜單菜單FileFile定義結(jié)束定義結(jié)束 POPUP &

4、HelpPOPUP &Help /定義定義HelpHelp菜單菜單 BEGINBEGIN /菜單菜單HelpHelp定義開始定義開始 MENUITEM &About, IDC_ABOUT_MENU MENUITEM &About, IDC_ABOUT_MENU /菜單項(xiàng)菜單項(xiàng) ENDEND /菜單菜單HelpHelp定義結(jié)束定義結(jié)束ENDENDF菜單模板用一種很簡單的結(jié)構(gòu)在資源腳本文菜單模板用一種很簡單的結(jié)構(gòu)在資源腳本文件中定義,一個(gè)菜單資源模板實(shí)例如下:件中定義,一個(gè)菜單資源模板實(shí)例如下:2022-1-127 3. CMenu類類FCMenuCMenu類是類是Cobj

5、ectCobject類直接派生的。類直接派生的。FCMenuCMenu類提供了許多處理菜單和菜單項(xiàng)的方法:類提供了許多處理菜單和菜單項(xiàng)的方法:構(gòu)造方法;構(gòu)造方法;菜單操作方法;菜單操作方法;菜單項(xiàng)操作方法;菜單項(xiàng)操作方法;虛擬方法。虛擬方法。2022-1-128 3. CMenu類(續(xù))類(續(xù))F構(gòu)造方法用于建立構(gòu)造方法用于建立WindowsWindows菜單,并在運(yùn)行時(shí)將菜單,并在運(yùn)行時(shí)將它們附加到它們附加到CMenuCMenu對象上,對象上,表表1 12 2- -1 1 C CM Me en nu u的的構(gòu)構(gòu)造造方方法法方方法法說說明明A At tt ta ac ch h( () )把把一

6、一個(gè)個(gè)標(biāo)標(biāo)準(zhǔn)準(zhǔn)的的W Wi in nd do ow ws s菜菜單單句句柄柄附附加加到到C CM Me en nu u對對象象上上C Cr re ea at te eM Me en nu u( () )創(chuàng)創(chuàng)建建一一個(gè)個(gè)空空菜菜單單并并把把它它附附加加到到C CM Me en nu u對對象象上上C Cr re ea at te eP Po op pu up pM Me en nu u( () )創(chuàng)創(chuàng)建建一一個(gè)個(gè)彈彈出出式式菜菜單單并并把把它它附附加加到到C CM Me en nu u對對象象上上D De el le et te eT Te em mp pM Ma ap p( () )刪刪除除由

7、由F Fr ro om mH Ha an nd dl le e( () )構(gòu)構(gòu)造造函函數(shù)數(shù)創(chuàng)創(chuàng)建建的的任任何何臨臨時(shí)時(shí)C CM Me en nu u對對象象D De es st tr ro oy yM Me en nu u( () )去去掉掉附附加加到到C CM Me en nu u對對象象上上的的菜菜單單并并釋釋放放該該菜菜單單占占有有的的任任何何內(nèi)內(nèi)存存D De ea at tc ch h( () )從從C CM Me en nu u對對象象上上拆拆開開W Wi in nd do ow ws s菜菜單單句句柄柄并并返返回回該該句句柄柄F Fr ro om mH Ha an nd dl le

8、 e( () )當(dāng)當(dāng)給給定定W Wi in nd do ow ws s菜菜單單句句柄柄時(shí)時(shí),返返回回C CM Me en nu u對對象象指指針針G Ge et tS Sa af fe eH Hm me en nu u( () )返返回回由由C CM Me en nu u對對象象封封裝裝的的菜菜單單句句柄柄成成員員( (m m_ _h hM Me en nu u) )L Lo oa ad dM Me en nu u( () )從從可可執(zhí)執(zhí)行行文文件件裝裝入入菜菜單單資資源源并并把把它它附附到到C Cm me en nu u對對象象上上L Lo oa ad dM Me en nu uI In n

9、d di ir re ec ct t( () )從從內(nèi)內(nèi)存存中中的的菜菜單單模模板板中中裝裝入入菜菜單單并并把把它它附附到到C CM Me en nu u對對象象上上2022-1-1292022-1-12102022-1-12112022-1-12121.應(yīng)用程序的實(shí)現(xiàn)功能應(yīng)用程序的實(shí)現(xiàn)功能F主窗口標(biāo)題為主窗口標(biāo)題為Application of MenuApplication of Menu。F有三個(gè)按鈕:有三個(gè)按鈕:VoiceVoice、ShowShow和和ExitExit。F有兩個(gè)菜單:有兩個(gè)菜單:FileFile和和HelpHelp。FFileFile下拉出三個(gè)菜單項(xiàng):下拉出三個(gè)菜單項(xiàng):

10、VoiceVoice、ShowShow和和Exit Exit 。 F單擊單擊VioceVioce選項(xiàng),可聽到選項(xiàng),可聽到PCPC機(jī)喇叭發(fā)出蜂鳴聲機(jī)喇叭發(fā)出蜂鳴聲F單擊單擊ShowShow,則彈出對話框,顯示信息,則彈出對話框,顯示信息“This is This is a Sample of adding menu”a Sample of adding menu”。F單擊單擊ExitExit,則退出。,則退出。2022-1-1213主窗口布局如下圖;主窗口布局如下圖;2022-1-12142022-1-12152022-1-1216對對 象象 IDIDCaptionCaption命令按鈕命令按鈕

11、IDC_VOICE_BUTTONIDC_VOICE_BUTTON&Voice&Voice命令按鈕命令按鈕IDC_SHOW_BUTTONIDC_SHOW_BUTTON&Show&Show命令按鈕命令按鈕IDC_EXTT_BUTTONIDC_EXTT_BUTTON&Exit&Exit2022-1-1217(a)(a)InsertInsertResourceResource對話框?qū)υ捒?b) (b) 選擇選擇MenuMenu項(xiàng)項(xiàng)(c)(c)單擊按鈕單擊按鈕NewNew,加一菜,加一菜單資源單資源F對話框中菜單的設(shè)計(jì)對話框中菜單的設(shè)計(jì)插入資源插入資源In

12、sertInsert-ResourceResource,顯示,顯示nsertResourcensertResource對對話框話框在資源列表選擇在資源列表選擇MenuMenu項(xiàng)項(xiàng)單擊按鈕單擊按鈕NewNew ,在資源文件,在資源文件Menu.rcMenu.rc中加一菜單資源。中加一菜單資源。2022-1-12184. 給菜單連接一個(gè)類給菜單連接一個(gè)類F作為一個(gè)對象,菜單必須與一個(gè)類連接。作為一個(gè)對象,菜單必須與一個(gè)類連接。F這個(gè)菜單是對話框中的一個(gè)資源,將它與對話框這個(gè)菜單是對話框中的一個(gè)資源,將它與對話框的派生類的派生類CMenuDlgCMenuDlg相連接。相連接。F菜單菜單IDR_MEN

13、U1IDR_MENU1 連接了一個(gè)類,可調(diào)用該類的成連接了一個(gè)類,可調(diào)用該類的成員函數(shù)和成員變量。員函數(shù)和成員變量。2022-1-12195.連接菜單和應(yīng)用程序的主窗口連接菜單和應(yīng)用程序的主窗口F為了在主窗口中顯示菜單,菜單還應(yīng)連接主窗口。為了在主窗口中顯示菜單,菜單還應(yīng)連接主窗口。F菜單與主窗口對話框菜單與主窗口對話框( (即即IDD_MENU_DIALOGIDD_MENU_DIALOG) )的連接:的連接:F在在MenuMenu工作區(qū)的工作區(qū)的Resource ViewResource View選項(xiàng)卡中,雙擊選項(xiàng)卡中,雙擊DialogDialog文件夾中的文件夾中的IDD_MENU_DIA

14、LOGIDD_MENU_DIALOG,彈出,彈出IDD_MENU_DIALOGIDD_MENU_DIALOG對話框。對話框。F在對話框內(nèi),單擊鼠標(biāo)右鍵,在快捷菜單中選擇在對話框內(nèi),單擊鼠標(biāo)右鍵,在快捷菜單中選擇PropertiesProperties命令,命令,在對話框中的在對話框中的MenuMenu組合框中選擇組合框中選擇IDD_MENU1IDD_MENU12022-1-1220(1) 給菜單給菜單File的的Exit選項(xiàng)編寫代碼選項(xiàng)編寫代碼void CMenuDlgvoid CMenuDlg:OnExitMenuOnExitMenu()() OnOKOnOK();(); (2) 給給Fil

15、e菜單的菜單的Voice項(xiàng)連接代碼項(xiàng)連接代碼void CMenuDlgvoid CMenuDlg:OnVioceMenuOnVioceMenu()() MessageBeep MessageBeep(WORDWORD)-1-1);); DWORD iTime=GetCurrentTimeDWORD iTime=GetCurrentTime()() whilewhile(GetCurrentTimeGetCurrentTime()() iTime+500 AppWizard Step 1 - Dialog basedMFC - AppWizard Step 1 - Dialog based(2)

16、 (2) 給對話框添加菜單。給對話框添加菜單。Insert - Resource, Insert - Resource, 在在Resource type -Resource type -Menu - NewMenu - New按鈕為應(yīng)用程序添加菜單資源按鈕為應(yīng)用程序添加菜單資源 - - 設(shè)置菜單項(xiàng)屬性,設(shè)置菜單項(xiàng)屬性,各菜單項(xiàng)的屬性如表所示各菜單項(xiàng)的屬性如表所示對象對象IDIDCaptionCaption菜單菜單時(shí)間時(shí)間(&(&T)T)菜單項(xiàng)菜單項(xiàng)ID_YEAR_MENUID_YEAR_MENU年、月、日年、月、日(&(&D)D)菜單項(xiàng)菜單項(xiàng)ID_HOUR_ME

17、NUID_HOUR_MENU小時(shí)、分鐘、秒小時(shí)、分鐘、秒(&(&H)H)菜單項(xiàng)菜單項(xiàng)ID_EXIT_MENUID_EXIT_MENU退出退出(&(&X)X)2022-1-1225- -在菜單上單擊鼠標(biāo)右鍵在菜單上單擊鼠標(biāo)右鍵- -在彈出菜單中選在彈出菜單中選ClassWizardClassWizard- -出現(xiàn)了出現(xiàn)了Add ClassAdd Class對話框?qū)υ捒? -選擇選擇Select an existing calssSelect an existing calss選項(xiàng),單擊選項(xiàng),單擊OKOK按鈕,按鈕,- -在彈出的對話框中選擇在彈出的對話框中選擇CM

18、y12_5DlgCMy12_5Dlg類,這樣就把菜單加入到對話類,這樣就把菜單加入到對話框類中。框類中。- -在在Resource ViewResource View選項(xiàng)卡中打開選項(xiàng)卡中打開DialogDialog資源組,雙擊資源組,雙擊IDD_MY12_5_DIALOGIDD_MY12_5_DIALOG,如下圖。,如下圖。鼠標(biāo)右鍵鼠標(biāo)右鍵- -PropertiesProperties菜單項(xiàng),菜單項(xiàng),在在MenuMenu列表框中選擇編輯過的列表框中選擇編輯過的菜單的菜單的IDID:ID_MENU1ID_MENU1。這樣。這樣就把菜單加入到對話框中。就把菜單加入到對話框中。2022-1-1226

19、IDID變量變量ID_YEAR_EDITID_YEAR_EDITm_Year_Editm_Year_EditID_MONTH_EDITID_MONTH_EDIT m_Month_Editm_Month_EditID_DAY_EDITID_DAY_EDITm_Day_Editm_Day_EditID_HOUR_EDITID_HOUR_EDITm_Hour_Editm_Hour_EditID_MINUTE_EDITID_MINUTE_EDITm_Minute_Editm_Minute_EditID_SECOND_EDITID_SECOND_EDITm_Second_Editm_Second_Edi

20、tID_EXIT_BUTTONID_EXIT_BUTTONE&xitE&xit2022-1-1227菜單項(xiàng)的消息處理函數(shù)菜單項(xiàng)的消息處理函數(shù)菜單項(xiàng)菜單項(xiàng)IDID消息消息消息處理函數(shù)消息處理函數(shù)ID_YEAR_MENUID_YEAR_MENUCOMMANDCOMMANDOnYearMenuOnYearMenu()()ID_HOUR_MENUID_HOUR_MENUCOMMANDCOMMANDOnHourMenuOnHourMenu()()ID_EXIT_MENUID_EXIT_MENUCOMMANDCOMMANDOnExitMenuOnExitMenu()()void CMy12

21、_5Dlg:OnYearMenuvoid CMy12_5Dlg:OnYearMenu() /() /給給“年、月、日年、月、日”菜單項(xiàng)消息處理函數(shù)菜單項(xiàng)消息處理函數(shù) struct tm struct tm * *newtimenewtime; ;/定義定義tmtm結(jié)構(gòu)結(jié)構(gòu), ,存貯時(shí)間存貯時(shí)間 time_t long_time;time_t long_time;/定義保存時(shí)間的變量定義保存時(shí)間的變量 char buffer10;char buffer10; time( &long_time ); time( &long_time );/獲取時(shí)間獲取時(shí)間 newtime = lo

22、caltimenewtime = localtime( &long_time ); /( &long_time ); /時(shí)間轉(zhuǎn)換時(shí)間轉(zhuǎn)換 /將年月日輸出到編輯框中將年月日輸出到編輯框中. . _ _itoa(newtimeitoa(newtime-tm_year+1900,buffer,10);/tm_year-tm_year+1900,buffer,10);/tm_year是當(dāng)前年份和是當(dāng)前年份和19001900之差之差 m_Year_Edit.SetWindowTextm_Year_Edit.SetWindowText(LPCTSTR)(buffer);(LPCTSTR)(

23、buffer); _itoa(newtime-tm_mon+1,buffer,10); _itoa(newtime-tm_mon+1,buffer,10);/tm_mon/tm_mon是當(dāng)前月份是當(dāng)前月份 m_Month_Edit.SetWindowTextm_Month_Edit.SetWindowText(LPCTSTR)(buffer);(LPCTSTR)(buffer); _itoa(newtime-tm_mday,buffer,10); _itoa(newtime-tm_mday,buffer,10);/tm_mday/tm_mday是當(dāng)前日是當(dāng)前日 m_Day_Edit.SetWindowTextm_Day_Edit.SetWindowText(LPCTSTR)(buffer);(LPCTSTR)(buffer); 2022-1-1228void CMy12_5Dlg:OnHourMenuvoid CMy12_5Dlg:OnHourMenu() /() /給菜單項(xiàng)給菜單項(xiàng)“小時(shí)、分、秒小時(shí)、分、秒”加入代碼加入代碼 struct tm struct tm * *newtimenewtime; ;/定義定義tmtm結(jié)構(gòu)結(jié)構(gòu), ,保存時(shí)間保存時(shí)間 time_t long_time;time_t long_time;/定義保存時(shí)間

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論