版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1第第6章菜單、工具欄和狀態(tài)欄章菜單、工具欄和狀態(tài)欄 6.1 菜單菜單 6.2 工具欄工具欄 6.3 狀態(tài)欄狀態(tài)欄 2第第6章菜單、工具欄和狀態(tài)欄章菜單、工具欄和狀態(tài)欄 6.1 菜單菜單 6.2 工具欄工具欄 6.3 狀態(tài)欄狀態(tài)欄 36.1菜單菜單 (1 of 11) 對(duì)于菜單的顯示都遵循下列一些規(guī)則:對(duì)于菜單的顯示都遵循下列一些規(guī)則:u若某菜單項(xiàng)標(biāo)題后有若某菜單項(xiàng)標(biāo)題后有“”,那么在,那么在點(diǎn)擊某菜單項(xiàng)會(huì)彈出一對(duì)話框。點(diǎn)擊某菜單項(xiàng)會(huì)彈出一對(duì)話框。u若某項(xiàng)菜單有子菜單,那么在該菜單若某項(xiàng)菜單有子菜單,那么在該菜單項(xiàng)文本后有項(xiàng)文本后有“”。u菜單項(xiàng)需要助記符,用括號(hào)將帶下劃菜單項(xiàng)需要助記符,用括
2、號(hào)將帶下劃線的字母括起來。助記符與線的字母括起來。助記符與Alt構(gòu)成構(gòu)成一個(gè)組合鍵,當(dāng)按住一個(gè)組合鍵,當(dāng)按住“Alt”鍵不放,鍵不放,再敲擊該字母時(shí),對(duì)應(yīng)的菜單項(xiàng)就會(huì)再敲擊該字母時(shí),對(duì)應(yīng)的菜單項(xiàng)就會(huì)被選中。被選中。u若某項(xiàng)菜單需要快捷鍵的支持,則一若某項(xiàng)菜單需要快捷鍵的支持,則一般將其列在相應(yīng)菜單項(xiàng)文本之后。任般將其列在相應(yīng)菜單項(xiàng)文本之后。任何時(shí)候按下快捷鍵,相應(yīng)的菜單命令何時(shí)候按下快捷鍵,相應(yīng)的菜單命令都會(huì)被執(zhí)行。都會(huì)被執(zhí)行。 圖圖6.1 File菜單菜單 46.1菜單菜單 (2 of 11) 6.1.1 用編輯器設(shè)計(jì)菜單用編輯器設(shè)計(jì)菜單 編輯菜單編輯菜單 在菜單的空位置上雙擊鼠標(biāo)左鍵,則出
3、現(xiàn)它的屬性對(duì)話在菜單的空位置上雙擊鼠標(biāo)左鍵,則出現(xiàn)它的屬性對(duì)話框,如圖。框,如圖。 圖圖6.2 菜單編輯器菜單編輯器菜單的空位置圖圖6.3 菜單屬性對(duì)話框菜單屬性對(duì)話框56.1菜單菜單 (3 of 11) 66.1菜單菜單 (4 of 11) 需要注意的是:需要注意的是:u當(dāng)菜單項(xiàng)的屬性中選中了當(dāng)菜單項(xiàng)的屬性中選中了Pop_up(該菜單包含子菜單該菜單包含子菜單)時(shí),時(shí),對(duì)話框中對(duì)話框中ID、Separator和和Prompt項(xiàng)無效。項(xiàng)無效。u增加新的菜單項(xiàng)后,用戶可以用鼠標(biāo)將菜單項(xiàng)拖到其他增加新的菜單項(xiàng)后,用戶可以用鼠標(biāo)將菜單項(xiàng)拖到其他位置,而當(dāng)菜單項(xiàng)位置改變時(shí),其屬性并不改變。位置,而當(dāng)菜
4、單項(xiàng)位置改變時(shí),其屬性并不改變。 菜單項(xiàng)被拖動(dòng)的位置圖圖6.4 拖動(dòng)菜單項(xiàng)拖動(dòng)菜單項(xiàng)圖圖6.5 添加的菜單項(xiàng)添加的菜單項(xiàng)76.1菜單菜單 (5 of 11) 菜單命令的消息映射菜單命令的消息映射 例例Ex_Mmenu “成績輸入成績輸入”菜單項(xiàng)的映射。菜單項(xiàng)的映射。(1) 進(jìn)入進(jìn)入MFC ClassWizard對(duì)話框,切換到對(duì)話框,切換到Message Maps頁面。頁面。(2) 從從“Class name”列表中選擇列表中選擇CMainFrame,在,在IDs列表中選擇列表中選擇ID_SCORE_IN,然后在,然后在Messages框中選擇框中選擇COMMAND消息,如圖。消息,如圖。 圖圖
5、6.6 消息的選擇消息的選擇86.1菜單菜單 (6 of 11) (3) 單擊單擊Add Function按鈕或雙擊按鈕或雙擊COMMAND消息,輸入成員函數(shù)的名消息,輸入成員函數(shù)的名稱。如圖稱。如圖6.7所示。所示。(4) 單擊單擊OK。選擇新增加的成員函數(shù),單擊。選擇新增加的成員函數(shù),單擊Edit Code按鈕按鈕(或直接在或直接在函數(shù)名雙擊鼠標(biāo)左鍵函數(shù)名雙擊鼠標(biāo)左鍵),就可以在此成員函數(shù)中添加一些代碼。例如:,就可以在此成員函數(shù)中添加一些代碼。例如:void CMainFrame:OnScoreIn() / TODO: Add your command handler code here
6、AfxMessageBox(現(xiàn)在就輸入成績嗎?現(xiàn)在就輸入成績嗎?);(5)編譯并運(yùn)行。在應(yīng)用程序的頂層菜單上,單擊編譯并運(yùn)行。在應(yīng)用程序的頂層菜單上,單擊“成績輸入成績輸入”菜單項(xiàng)或菜單項(xiàng)或按按Alt+S組合鍵,如圖組合鍵,如圖6.8所示。所示。圖圖6.7 添加成員函數(shù)對(duì)話框添加成員函數(shù)對(duì)話框圖圖6.8 菜單命令執(zhí)行的結(jié)果菜單命令執(zhí)行的結(jié)果96.1菜單菜單 (7 of 11) 6.1.2 使用鍵盤快捷鍵使用鍵盤快捷鍵 (1) 先打開上例的項(xiàng)目工作區(qū)窗口中先打開上例的項(xiàng)目工作區(qū)窗口中Accelerator的資源項(xiàng),雙擊的資源項(xiàng),雙擊IDR_MAINFRAME,如圖。,如圖。 圖圖6.9 示例示例
7、Ex_Sdi的加速鍵資源的加速鍵資源最下端的空行106.1菜單菜單 (8 of 11) (2) 要建立一新的加速鍵,雙擊加速鍵列表的最下端的空行,如圖要建立一新的加速鍵,雙擊加速鍵列表的最下端的空行,如圖6.10,其中可設(shè)置的屬性如表,其中可設(shè)置的屬性如表6.2。(3) 在上述對(duì)話框中,選擇在上述對(duì)話框中,選擇ID_SCORE_IN作為要設(shè)定快捷鍵的作為要設(shè)定快捷鍵的ID號(hào),號(hào),單擊單擊Next Key Typed,按下,按下Ctrl+1作為此加速鍵的鍵值。作為此加速鍵的鍵值。 圖圖6.10 “Accel Properities”對(duì)話框?qū)υ捒?16.1菜單菜單 (9 of 11) 6.1.3
8、使用快捷菜單使用快捷菜單右鍵菜單右鍵菜單用資源編輯器和用資源編輯器和MFC庫的庫的CMenu:TrackPopupMenu函數(shù)可以創(chuàng)建函數(shù)可以創(chuàng)建快捷菜單??旖莶藛?。CMenu:TrackPopupMenu函數(shù)原型如下:函數(shù)原型如下:BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL ); 其中:其中:x和和y表示菜單頂端表示菜單頂端(一般為左上角一般為左上角)的水平坐標(biāo)和垂直坐標(biāo)。的水平坐標(biāo)和垂直坐標(biāo)。pWnd表示彈出菜單的窗口。表示彈出菜單的窗口。lpRect是一個(gè)是一個(gè)RECT
9、結(jié)構(gòu)或結(jié)構(gòu)或CRect對(duì)象指針,表示一個(gè)矩形區(qū)域,不在對(duì)象指針,表示一個(gè)矩形區(qū)域,不在該區(qū)域單擊鼠標(biāo)時(shí),則彈出菜單消失;當(dāng)該區(qū)域單擊鼠標(biāo)時(shí),則彈出菜單消失;當(dāng)lpRect為為NULL時(shí),若擊在菜時(shí),若擊在菜單外面,菜單立刻消失。單外面,菜單立刻消失。126.1菜單菜單 (10 of 11) 例例Ex_Menu創(chuàng)建彈出菜單。創(chuàng)建彈出菜單。(1) 選擇選擇“Insert”菜單菜單“Resource”命令,為應(yīng)用程序添加一個(gè)新的菜單資命令,為應(yīng)用程序添加一個(gè)新的菜單資源。源。(2) 用菜單編輯器,為該菜單資源中的頂層菜單的第一項(xiàng)加一任意標(biāo)題用菜單編輯器,為該菜單資源中的頂層菜單的第一項(xiàng)加一任意標(biāo)題(
10、實(shí)際實(shí)際上該標(biāo)題無任何作用上該標(biāo)題無任何作用),在此菜單項(xiàng)下依次添加如下表所示的菜單項(xiàng)。,在此菜單項(xiàng)下依次添加如下表所示的菜單項(xiàng)。(3) 將此菜單資源將此菜單資源ID號(hào)改為號(hào)改為IDR_MYFLOATMENU (默認(rèn)的默認(rèn)的ID號(hào)為號(hào)為 IDR_MENU1) 。(4) 按按Ctrl+W快捷鍵打開快捷鍵打開ClassWizard,將出現(xiàn)一對(duì)話框,詢問是,將出現(xiàn)一對(duì)話框,詢問是“選擇一選擇一個(gè)已存在的類個(gè)已存在的類”,還是,還是“創(chuàng)建一個(gè)新類創(chuàng)建一個(gè)新類”。選擇。選擇“選擇一個(gè)已存在的類選擇一個(gè)已存在的類”項(xiàng)并選定項(xiàng)并選定CMainFrame類類。136.1菜單菜單 (11 of 11) (5)
11、在在CMainFrame類類中,選擇上表中所列的菜單中,選擇上表中所列的菜單ID,雙擊,雙擊COMMAND消息。消息。這里僅為菜單這里僅為菜單ID_MENU_SCOREIN映射映射COMMAND消息,添加代碼:消息,添加代碼:void CMainFrame:OnMenuScorein() AfxMessageBox(現(xiàn)在就輸入成績嗎?現(xiàn)在就輸入成績嗎?);(6) 在在CMainFrame類類加入加入WM_CONTEXTMENU消息處理函數(shù),代碼如下:消息處理函數(shù),代碼如下:void CMainFrame:OnContextMenu(CWnd* pWnd, CPoint point) CMenu
12、 menu;menu.LoadMenu(IDR_MYFLOATMENU);menu.GetSubMenu(0)- TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this);(7) 運(yùn)行并測(cè)試。在應(yīng)用程序的窗口客戶區(qū)中單擊鼠標(biāo)右鍵,彈出如圖菜單。運(yùn)行并測(cè)試。在應(yīng)用程序的窗口客戶區(qū)中單擊鼠標(biāo)右鍵,彈出如圖菜單。 “成績打印成績打印”菜單命令沒有消息處理函數(shù),因此它是灰顯的,用戶不能使用菜單命令沒有消息處理函數(shù),因此它是灰顯的,用戶不能使用它們。若用戶選中它們。若用戶選中“成績輸入成績輸入”菜單命令,則會(huì)執(zhí)行相應(yīng)的代碼
13、。菜單命令,則會(huì)執(zhí)行相應(yīng)的代碼。 圖圖6.13 快捷菜單快捷菜單14第第6章菜單、工具欄和狀態(tài)欄章菜單、工具欄和狀態(tài)欄 6.1 菜單菜單 6.2 工具欄工具欄 6.3 狀態(tài)欄狀態(tài)欄 156.2工具欄工具欄 (1 of 6)6.2.1 使用工具欄編輯器使用工具欄編輯器 例:例:選擇選擇“File”“Open Workspace”,創(chuàng)建單文檔應(yīng)用程序,創(chuàng)建單文檔應(yīng)用程序Ex_Sdi 。在項(xiàng)目工作區(qū)窗口中選擇。在項(xiàng)目工作區(qū)窗口中選擇ResourceView標(biāo)簽,雙擊標(biāo)簽,雙擊“Toolbar”項(xiàng)中的項(xiàng)中的IDR_MAINFRAME,則工具欄編輯器出現(xiàn)在主界,則工具欄編輯器出現(xiàn)在主界面的右邊,如圖。面
14、的右邊,如圖。圖圖6.14 工具欄編輯器窗口工具欄編輯器窗口空按鈕空按鈕166.2工具欄工具欄 (2 of 6)可以對(duì)工具欄進(jìn)行的操作:可以對(duì)工具欄進(jìn)行的操作: (1) 創(chuàng)建一個(gè)新的工具欄按鈕創(chuàng)建一個(gè)新的工具欄按鈕在新建的工具欄中,最右端總有一個(gè)空按鈕,雙擊該按鈕彈出其屬性在新建的工具欄中,最右端總有一個(gè)空按鈕,雙擊該按鈕彈出其屬性對(duì)話框,在對(duì)話框,在ID框中輸入其標(biāo)識(shí)符名稱。單擊該按鈕,在編輯器的視窗框中輸入其標(biāo)識(shí)符名稱。單擊該按鈕,在編輯器的視窗內(nèi)進(jìn)行編輯,這個(gè)編輯就是繪制一個(gè)按鈕位圖。內(nèi)進(jìn)行編輯,這個(gè)編輯就是繪制一個(gè)按鈕位圖。 (2) 移動(dòng)一個(gè)按鈕移動(dòng)一個(gè)按鈕在工具欄中移動(dòng)一個(gè)按鈕,用鼠
15、標(biāo)左鍵點(diǎn)中它并拖動(dòng)至相應(yīng)位置即可。在工具欄中移動(dòng)一個(gè)按鈕,用鼠標(biāo)左鍵點(diǎn)中它并拖動(dòng)至相應(yīng)位置即可。 若在移動(dòng)一個(gè)按鈕的同時(shí),按下若在移動(dòng)一個(gè)按鈕的同時(shí),按下Ctrl鍵,則在新位置復(fù)制一個(gè)按鈕。鍵,則在新位置復(fù)制一個(gè)按鈕。 (3) 刪除一個(gè)按鈕刪除一個(gè)按鈕如果用戶拖動(dòng)它離開工具欄位置,則此按鈕從工具欄中消失如果用戶拖動(dòng)它離開工具欄位置,則此按鈕從工具欄中消失(被刪除被刪除)。 但若選中按鈕后,單擊但若選中按鈕后,單擊Delete鍵并不能刪除一個(gè)按鈕,只是將按鈕中鍵并不能刪除一個(gè)按鈕,只是將按鈕中的圖形全部以背景色填充。的圖形全部以背景色填充。176.2工具欄工具欄 (3 of 6)可以對(duì)工具欄進(jìn)行
16、的操作:可以對(duì)工具欄進(jìn)行的操作: (4) 在按鈕之間插入在按鈕之間插入/刪除空格刪除空格u如果如果按鈕左側(cè)沒有空格按鈕左側(cè)沒有空格,拖動(dòng)該按鈕向右移動(dòng)并當(dāng)覆蓋,拖動(dòng)該按鈕向右移動(dòng)并當(dāng)覆蓋相鄰按鈕的一半以上時(shí),釋放鼠標(biāo)鍵,則此按鈕左側(cè)出相鄰按鈕的一半以上時(shí),釋放鼠標(biāo)鍵,則此按鈕左側(cè)出現(xiàn)空格?,F(xiàn)空格。u如果如果按鈕左側(cè)有空格按鈕左側(cè)有空格而而按鈕右側(cè)沒有空格按鈕右側(cè)沒有空格,拖動(dòng)該按鈕,拖動(dòng)該按鈕向左移動(dòng)并當(dāng)按鈕的左邊界接觸到前面按鈕時(shí),釋放鼠向左移動(dòng)并當(dāng)按鈕的左邊界接觸到前面按鈕時(shí),釋放鼠標(biāo)鍵,則此按鈕右側(cè)將出現(xiàn)空格。標(biāo)鍵,則此按鈕右側(cè)將出現(xiàn)空格。u如果如果按鈕左、右兩側(cè)均有空格按鈕左、右兩側(cè)均
17、有空格,拖動(dòng)該按鈕向右移動(dòng)并,拖動(dòng)該按鈕向右移動(dòng)并當(dāng)接觸到相鄰按鈕時(shí),則此按鈕左側(cè)的空格保留,按鈕當(dāng)接觸到相鄰按鈕時(shí),則此按鈕左側(cè)的空格保留,按鈕右側(cè)的空格消失。相反,拖動(dòng)該按鈕向左移動(dòng)并當(dāng)接觸右側(cè)的空格消失。相反,拖動(dòng)該按鈕向左移動(dòng)并當(dāng)接觸到前一個(gè)相鄰按鈕時(shí),則此按鈕左側(cè)的空格消失,右側(cè)到前一個(gè)相鄰按鈕時(shí),則此按鈕左側(cè)的空格消失,右側(cè)的空格保留。的空格保留。186.2工具欄工具欄 (4 of 6)可以對(duì)工具欄進(jìn)行的操作:可以對(duì)工具欄進(jìn)行的操作: (5) 設(shè)置工具欄按鈕的屬性設(shè)置工具欄按鈕的屬性雙擊某工具按鈕,就會(huì)彈出其屬性對(duì)話框,如下圖所示。雙擊某工具按鈕,就會(huì)彈出其屬性對(duì)話框,如下圖所示。
18、圖圖6.15 工具欄按鈕屬性對(duì)話框工具欄按鈕屬性對(duì)話框196.2工具欄工具欄 (5 of 6)6.2.2 工具欄和菜單相結(jié)合工具欄和菜單相結(jié)合 例例Ex_T&M 將菜單項(xiàng)將菜單項(xiàng)ID_SCORE_IN與工具按鈕相結(jié)合。與工具按鈕相結(jié)合。(1) 在單文檔應(yīng)用程序在單文檔應(yīng)用程序Ex_Sid中,作如下操作;中,作如下操作;(2) 利用工具欄編輯器設(shè)計(jì)一個(gè)工具按鈕,如圖;利用工具欄編輯器設(shè)計(jì)一個(gè)工具按鈕,如圖;(3) 雙擊剛才設(shè)計(jì)的鈕工具按鈕圖形,彈出該工具按鈕的屬性對(duì)話框;雙擊剛才設(shè)計(jì)的鈕工具按鈕圖形,彈出該工具按鈕的屬性對(duì)話框;在屬性對(duì)話框中,將工具按鈕的在屬性對(duì)話框中,將工具按鈕的ID
19、號(hào)設(shè)為號(hào)設(shè)為ID_SCORE_IN,在,在Prompt框框內(nèi)鍵入內(nèi)鍵入“向系統(tǒng)輸入學(xué)生成績向系統(tǒng)輸入學(xué)生成績n成績輸入成績輸入”;圖圖6.16 工具欄按鈕的設(shè)計(jì)工具欄按鈕的設(shè)計(jì)206.2工具欄工具欄 (6 of 6)6.2.2 工具欄和菜單相結(jié)合工具欄和菜單相結(jié)合 例例Ex_T&M 將菜單項(xiàng)將菜單項(xiàng)ID_SCORE_IN與工具按鈕相結(jié)合。與工具按鈕相結(jié)合。 (4) 編譯并運(yùn)行程序。在應(yīng)用程序的工具欄上,將鼠標(biāo)指針移至剛才設(shè)編譯并運(yùn)行程序。在應(yīng)用程序的工具欄上,將鼠標(biāo)指針移至剛才設(shè)計(jì)的工具按鈕處,這時(shí)在狀態(tài)欄上顯示出計(jì)的工具按鈕處,這時(shí)在狀態(tài)欄上顯示出“向系統(tǒng)輸入學(xué)生成績向系統(tǒng)輸入學(xué)生成
20、績”信息,信息,若稍等片刻后,還會(huì)彈出提示小窗口,顯示出若稍等片刻后,還會(huì)彈出提示小窗口,顯示出“成績輸入成績輸入”字樣。字樣。21第第6章菜單、工具欄和狀態(tài)欄章菜單、工具欄和狀態(tài)欄 6.1 菜單菜單 6.2 工具欄工具欄 6.3 狀態(tài)欄狀態(tài)欄 226.3狀態(tài)欄狀態(tài)欄 (1 of 9) 6.3.1 狀態(tài)欄的定義狀態(tài)欄的定義 用用AppWizard創(chuàng)建的創(chuàng)建的SDI或或MDI應(yīng)用程序框架中,有一應(yīng)用程序框架中,有一個(gè)靜態(tài)的個(gè)靜態(tài)的indicators數(shù)組,這個(gè)數(shù)組中的元素通常都是一數(shù)組,這個(gè)數(shù)組中的元素通常都是一些些字符串資源的字符串資源的ID號(hào)號(hào),它是在,它是在MainFrm.cpp文件中被定
21、文件中被定義的,被義的,被MFC用作狀態(tài)欄的定義。用作狀態(tài)欄的定義。默認(rèn)的默認(rèn)的indicators數(shù)組包含數(shù)組包含4個(gè)元素,如下圖所示:個(gè)元素,如下圖所示:Static UINT indicators=ID_SEPARATOR,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,圖圖6.17 indicators數(shù)組的定義數(shù)組的定義236.3狀態(tài)欄狀態(tài)欄 (2 of 9)6.3.2 狀態(tài)欄的常用操作狀態(tài)欄的常用操作增加和減少窗格增加和減少窗格狀態(tài)欄中的窗格可以分為狀態(tài)欄中的窗格可以分為信息行窗格信息行窗格和和指示器窗格指示器窗格兩類。兩類
22、。l若在狀態(tài)欄中若在狀態(tài)欄中增加增加一個(gè)一個(gè)信息行窗格信息行窗格,則在,則在indicators數(shù)組中的適當(dāng)位置中增加一個(gè)數(shù)組中的適當(dāng)位置中增加一個(gè)ID_SEPARATOR標(biāo)識(shí)標(biāo)識(shí)即可;即可;l若在狀態(tài)欄中若在狀態(tài)欄中增加增加一個(gè)一個(gè)指示器窗格指示器窗格,則在,則在indicators數(shù)組中的適當(dāng)位置增加一個(gè)在字符串資源中定義過的數(shù)組中的適當(dāng)位置增加一個(gè)在字符串資源中定義過的資源資源ID號(hào)即可;號(hào)即可;l若在狀態(tài)欄中若在狀態(tài)欄中減少減少一個(gè)一個(gè)信息行或者指示器窗格信息行或者指示器窗格,其操,其操作與增加類似,只需減少一個(gè)對(duì)應(yīng)的數(shù)組元素即可。作與增加類似,只需減少一個(gè)對(duì)應(yīng)的數(shù)組元素即可。246.
23、3狀態(tài)欄狀態(tài)欄 (3 of 9)6.3.2 狀態(tài)欄的常用操作狀態(tài)欄的常用操作在狀態(tài)欄上顯示文本在狀態(tài)欄上顯示文本有三種辦法可以在狀態(tài)欄窗格顯示文本信息:有三種辦法可以在狀態(tài)欄窗格顯示文本信息:n(1) 調(diào)用調(diào)用CWnd:SetWindowText更新信息行窗更新信息行窗格格(或窗格或窗格0)中的文本。中的文本。l若狀態(tài)欄變量為若狀態(tài)欄變量為m_wndStatusBar,則,則m_wndStatusBar. SetWindowText(“消息消息”)語句語句將在第一個(gè)信息行窗格內(nèi)顯示將在第一個(gè)信息行窗格內(nèi)顯示“消息消息”字樣。字樣。256.3狀態(tài)欄狀態(tài)欄 (3 of 9)6.3.2 狀態(tài)欄的常用
24、操作狀態(tài)欄的常用操作在狀態(tài)欄上顯示文本在狀態(tài)欄上顯示文本有三種辦法可以在狀態(tài)欄窗格顯示文本信息:有三種辦法可以在狀態(tài)欄窗格顯示文本信息:n(2) 手動(dòng)處理狀態(tài)欄的手動(dòng)處理狀態(tài)欄的ON_UPDATE_COMMAND_UI更新消息,并更新消息,并在處理函數(shù)中調(diào)用在處理函數(shù)中調(diào)用CCmdUI:SetText函數(shù)。函數(shù)。266.3狀態(tài)欄狀態(tài)欄 (3 of 9)6.3.2 狀態(tài)欄的常用操作狀態(tài)欄的常用操作在狀態(tài)欄上顯示文本在狀態(tài)欄上顯示文本有三種辦法可以在狀態(tài)欄窗格顯示文本信息:有三種辦法可以在狀態(tài)欄窗格顯示文本信息:n(3) 調(diào)用調(diào)用CStatusBar:SetPaneText函數(shù)更新任函數(shù)更新任何窗
25、格何窗格(包括信息行窗格包括信息行窗格)中的文本。此函數(shù)原中的文本。此函數(shù)原型描述如下:型描述如下: BOOL SetPaneText( int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE );其中:其中:nIndex表示設(shè)置的窗格的索引表示設(shè)置的窗格的索引(第一個(gè)窗格的索引第一個(gè)窗格的索引為為0);lpszNewText表示要顯示的字符串;表示要顯示的字符串;bUpdate為為TRUE表示系統(tǒng)自動(dòng)更新顯示的結(jié)果。表示系統(tǒng)自動(dòng)更新顯示的結(jié)果。276.3狀態(tài)欄狀態(tài)欄 (4 of 9)例例Ex_Status 在狀態(tài)欄的最右邊兩個(gè)窗格中顯示出當(dāng)前
26、鼠在狀態(tài)欄的最右邊兩個(gè)窗格中顯示出當(dāng)前鼠標(biāo)在窗口客戶區(qū)的位置。標(biāo)在窗口客戶區(qū)的位置。(1) 將前面的單文檔應(yīng)用程序?qū)⑶懊娴膯挝臋n應(yīng)用程序Ex_Sdi打開或者新建一個(gè)單文打開或者新建一個(gè)單文檔應(yīng)用程序;檔應(yīng)用程序;(2) 將項(xiàng)目工作區(qū)窗口切換到將項(xiàng)目工作區(qū)窗口切換到ResourceView頁面,雙擊頁面,雙擊“String Table”項(xiàng)的項(xiàng)的“String Table”圖標(biāo)。在字符串列表的圖標(biāo)。在字符串列表的最后一行空項(xiàng)上雙擊鼠標(biāo)左鍵,如圖最后一行空項(xiàng)上雙擊鼠標(biāo)左鍵,如圖6.17所示。所示。(3) 該對(duì)話框中,可以指定相應(yīng)的該對(duì)話框中,可以指定相應(yīng)的ID和字符串值,這里加入和字符串值,這里加入
27、兩個(gè)字符串資源兩個(gè)字符串資源ID_LEFT和和ID_RIGHT,其字符個(gè)數(shù)的多,其字符個(gè)數(shù)的多少?zèng)Q定窗格的大小。如圖少?zèng)Q定窗格的大小。如圖6.18。圖圖6.17 字符串屬性對(duì)話框字符串屬性對(duì)話框添加的添加的字符串字符串圖圖6.18 添加的字符串資源添加的字符串資源286.3狀態(tài)欄狀態(tài)欄 (5 of 9)(4) 打開打開MainFrm.cpp文件,將原先的文件,將原先的indicators數(shù)組數(shù)組修改修改如下:如下:static UINT indicators =ID_SEPARATOR, / 第一個(gè)信息行窗格第一個(gè)信息行窗格ID_SEPARATOR, / 第二個(gè)信息行窗格第二個(gè)信息行窗格ID_
28、LEFT,/ 第三個(gè)窗格第三個(gè)窗格ID_RIGHT,/ 第四個(gè)窗格第四個(gè)窗格;(5) 必須必須手動(dòng)手動(dòng)添加消息處理函數(shù)原型添加消息處理函數(shù)原型。打開。打開Ex_SdiView.h文件,在文件,在AFX_MSG內(nèi)增加消息處理語句,內(nèi)增加消息處理語句,ClassWizard以后允許訪問和編輯以后允許訪問和編輯該代碼。該代碼。protected:/AFX_MSG(CEx_SdiView)afx_msg void OnUpdateXY(CCmdUI* pCmdUI);/AFX_MSGDECLARE_MESSAGE_MAP()296.3狀態(tài)欄狀態(tài)欄 (6 of 9)(6) 打開打開Ex_SdiView.cpp文件,在其消息入口處文件,在其消息入口處手動(dòng)手動(dòng)添加消息映射函添加消息映射函數(shù)數(shù): BEGIN_MESSAGE_MAP(CEx_SdiView, CView)/AFX_MSG_MAP(CEx_SdiView)ON_UPDATE_COMMAND_UI(ID_LEFT, OnUpdateXY)ON_UPDATE_COMMAND_UI(ID_RIGHT, OnUpdateXY)/AFX_MSG_MAP306.3狀態(tài)欄狀態(tài)欄 (7 of 9)(7) 增加修改狀態(tài)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 救護(hù)車司機(jī)聘任勞動(dòng)合同
- 工業(yè)設(shè)計(jì)制作合同3篇
- 安居房施工合同解除權(quán)行使3篇
- 換熱站施工招標(biāo)要求3篇
- 帶蓋不銹鋼垃圾桶采購協(xié)議3篇
- 房屋買賣合同過戶流程詳解與辦理指南3篇
- 斷橋鋁門窗改造招標(biāo)3篇
- 招標(biāo)文件范本版本示例3篇
- 招標(biāo)文件購買花名表3篇
- 控?zé)熜袆?dòng)倡議3篇
- 2024年度農(nóng)產(chǎn)品供應(yīng)鏈采購合同范本627123篇
- 會(huì)計(jì)專業(yè)調(diào)研報(bào)告范文
- 現(xiàn)代學(xué)徒制課題:數(shù)字化時(shí)代中國特色學(xué)徒制創(chuàng)新發(fā)展路徑研究(附:研究思路模板、可修改技術(shù)路線圖)
- 施工單位施工現(xiàn)場(chǎng)考核評(píng)價(jià)表
- 河南省信陽市2023-2024學(xué)年高一上學(xué)期期末政治試題 含解析
- 2024-2025學(xué)年上學(xué)期深圳初中語文七年級(jí)期末模擬卷3
- 2024-2025學(xué)年上學(xué)期廣州初中地理八年級(jí)期末模擬卷2
- 中考語文真題專題復(fù)習(xí) 小說閱讀(第01期)(解析版)
- 鋼制內(nèi)浮盤施工方案
- 喜報(bào)戰(zhàn)報(bào)捷報(bào)模板26
- 《信息系統(tǒng)培訓(xùn)》課件
評(píng)論
0/150
提交評(píng)論