版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1第1章VisualC++2019開發(fā)環(huán)境第2章MFC應用程序第3章圖形與文本第4章菜單、工具欄與狀態(tài)欄第5章對話框第6章Windows常用控件第7章文檔與視圖第8章打印編程第9章動態(tài)鏈接庫編程第10章多線程編程第11章數(shù)據(jù)庫編程第12章多媒體編程第13章綜合應用實例教材目錄24.1菜單4.2工具欄4.3狀態(tài)欄4.4應用實例第4章菜單、工具欄與狀態(tài)欄34.1菜單4.1.1菜單的類型常見菜單有3種:主菜單、彈出菜單和快捷菜單。1、主菜單指出現(xiàn)在應用程序主窗口或最上層窗口的菜單。通常對應有一個彈出菜單作為它的子菜單。2、彈出菜單指選擇主菜單或一個菜單項時彈出的子菜單。3、快捷菜單當右擊某個界面對象時,通常會彈出快捷菜單,它出現(xiàn)在鼠標箭頭的位置,快速展示當前對象可用的命令功能。4菜單設計一般需要經(jīng)過下面兩步:(1)使用菜單編輯器編輯菜單資源;(2)使用“類向?qū)А边M行消息映射,編輯成員函數(shù),完成菜單所要實現(xiàn)的功能。5使用菜單編輯器來編輯菜單資源。雙擊“資源視圖”中的Menu菜單資源,打開菜單編輯器。4.1.2編輯菜單61、插入新菜單項在當前空白菜單項位置插入選定窗口中的空白菜單項后按回車鍵(或雙擊空白菜單項),系統(tǒng)會在“屬性”窗口中顯示菜單項的相關(guān)屬性。在某菜單項前插入選中該菜單項并按Ins鍵,再雙擊該空白菜單項進行編輯。72、屬性對話框的設置如圖4.2所示,菜單項屬性窗口用于輸入菜單項的標識符(ID)、標題(描述文字)和菜單項在狀態(tài)欄上顯示的提示(提示)信息,并為該菜單項提供屬性調(diào)整。窗口中各項屬性的功能如表4.1所示83、調(diào)整菜單項位置選中某菜單項將其拖至適當位置。4、刪除菜單項用鼠標單擊菜單項或用上、下、左、右光標鍵選擇菜單項,然后右擊該菜單項,選擇“剪切”或“刪除”菜單命令,或直接按鍵盤上的Del鍵刪除。在刪除帶有子菜單的菜單項時,系統(tǒng)會彈出一個信息提示框,提醒用戶該操作將刪除子菜單以及它所包含的全部內(nèi)容。9【例4.1】編寫一個單文檔應用程序MyDraw,在菜單欄中增加一個“繪圖”主菜單,并在其中添加“矩形”和“橢圓”兩個菜單項。(1)啟動VisualStudioIDE并創(chuàng)建一個名為chap04的解決方案,在該解決方案中使用“MFC應用”項目模板,創(chuàng)建一個名為MyDraw的單文檔應用程序。項目樣式選擇“MFCstandard”,其他使用默認值。(2)為程序添加主菜單。打開“資源視圖”中的Menu文件夾,雙擊IDR_MAINFRAME打開菜單編輯器。雙擊菜單欄右側(cè)的虛線空白菜單項,在菜單項屬性窗口的“描述文字”欄中輸入“繪圖(&D)”。其他采用系統(tǒng)默認值。10(3)為主菜單添加菜單項。單擊“繪圖”菜單項下的虛線空白菜單項,在屬性窗口中輸入或選擇該菜單項的屬性值。在ID框中輸入ID_RECTANGLE,“描述文字”框中輸入“矩形(&R)\tCtrl+R”,“提示”框中輸入“在視圖中繪制矩形\n矩形”。用同樣的方法添加“橢圓”菜單項,它的ID、“描述文字”和“提示”分別為ID_ELLIPSE、橢圓(&L)\tCtrl+L、在視圖中繪制橢圓\n橢圓,并在“矩形”和“橢圓”兩個菜單項之間添加一條分隔線。11(4)為菜單項添加快捷鍵。打開“資源視圖”中的Accelerator文件夾,雙擊IDR_MAINFRAME打開快捷鍵編輯器。雙擊編輯器底部的空白框,打開AccelProperties對話框,在ID下拉列表中選擇ID_RECTANGLE,在Key編輯框中輸入R,右邊單選按鈕接受默認值,如圖4.4所示,關(guān)閉對話框。用同樣的方法為“橢圓”菜單項定義快捷鍵。1213(5)為菜單項添加快捷鍵。打開“資源視圖”中的Accelerator文件夾,雙擊IDR_MAINFRAME打開快捷鍵編輯器。選擇編輯器底部的空白框,在“屬性”窗口中輸入或選擇相關(guān)屬性值。在ID下拉列表中選擇ID_RECTANGLE,在“鍵”編輯框中輸入R,“Ctrl”屬性選擇“True”,其他接受默認值,如圖4.4所示。用同樣的方法為“橢圓”菜單項定義快捷鍵。14(6)編譯、鏈接并運行程序,結(jié)果如圖4.5所示。15在上例中僅添加了菜單,并沒有實現(xiàn)菜單的功能,即沒有對應的命令處理函數(shù)與菜單項對應,因此,添加的菜單項是灰色的,即處于當前不可用狀態(tài)。添加新的菜單項后,還應該為菜單項指定一個處理函數(shù),即利用類向?qū)砑右粋€消息處理函數(shù)。4.1.3建立消息映射16【例4.2】為例4.1中增加的菜單項添加消息處理函數(shù)。(1)啟動VisualStudioIDE,打開解決方案chap04。(2)在“類視圖”窗口中右擊項目MyDraw,選擇快捷菜單中的“類向?qū)А辈藛蚊罨虬碈trl+Shift+X鍵啟動“類向?qū)А惫ぞ摺?3)為CMyDrawView類添加一個類型為int的私有數(shù)據(jù)成員m,并在構(gòu)造函數(shù)中將其初始化為0。CMyDrawView::CMyDrawView()noexcept{ //TODO:在此處添加構(gòu)造代碼
m=0;}17(4)為“矩形”及“橢圓”菜單項添加消息處理函數(shù)。在“類向?qū)А睂υ捒虻摹邦惷睓谙吕斜碇羞x擇CMyDrawView,在“命令”欄下的“對象ID”選擇框中選擇ID_RECTANGLE,在“消息”框中選擇COMMAND,單擊“添加處理程序…”按鈕,接受系統(tǒng)默認函數(shù)名。單擊“編輯代碼”按鈕,為消息處理函數(shù)添加如下代碼。18voidCMyDrawView::OnRectangle(){ //TODO:在此添加命令處理程序代碼
m=1; Invalidate();}用同樣的方法為“橢圓”菜單項添加消息處理函數(shù),并編寫如下代碼。voidCMyDrawView::OnEllipse(){ //TODO:在此添加命令處理程序代碼
m=2; Invalidate();}19(5)在視圖類CMyDrawView的OnDraw()函數(shù)中添加代碼。voidCMyDrawView::OnDraw(CDC*pDC){ CMyDrawDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); if(!pDoc)return; //TODO:在此處為本機數(shù)據(jù)添加繪制代碼
CClientDCdc(this); if(m==1){ dc.Rectangle(10,10,200,100); } elseif(m==2){ dc.Ellipse(250,100,450,250); }}20(6)編譯、鏈接并運行程序,分別選擇“矩形”和“橢圓”菜單項,結(jié)果如圖4.6所21一般情況下,菜單項都不止一種狀態(tài)。例如,在沒有選擇任何內(nèi)容時,Edit菜單下的Copy、Cut等菜單項是無效的(灰色顯示)。有時,我們還會看到,在菜單項旁邊可能還會有檢查標記,表示它是選中的還是不選中的。比如,在Word的視圖菜單項下,當用戶選用【網(wǎng)格線】或【標尺】時,相應菜單項前會出現(xiàn)一個“√”。MFC通過消息映射機制和CCmdUI類更新菜單項的顯示。4.1.4菜單的有效控制22在類向?qū)А懊睢边x項下的“對象ID”選擇框中,如果選擇一個菜單ID,在“消息”列表框中就會出現(xiàn)以下兩項:COMMANDUPDATE_COMMAND_UI
其中UPDATE_COMMAND_UI是更新命令用戶接口消息,專門用于處理菜單項和工具條按鈕的更新。23【例4.3】為例4.2的程序MyDraw添加更新用戶界面的消息處理函數(shù),使程序啟動時菜單項“橢圓”處于不可用狀態(tài),當用戶單擊“矩形”菜單項后,在菜單項前顯示“√”標記,并使“橢圓”菜單項變?yōu)榭捎脿顟B(tài)。(1)啟動VisualStudioIDE,打開例4.2中的項目MyDraw。(2)為CMyDrawView類添加3個類型為BOOL、屬性為public的成員變量m_enable、m_checkr和m_checke,并在構(gòu)造函數(shù)CMyDrawView()中將它們初始化。24CMyDrawView::CMyDrawView()noexcept{ //TODO:在此處添加構(gòu)造代碼
m_enable=false;//記錄“橢圓”菜單項的有效性
m_checkr=false;//標識“矩形”菜單項前的顯示標記
m_checke=false;//標識“橢圓”菜單項前的顯示標記
m=0;//標識圖形的類別}25(3)打開“類向?qū)А惫ぞ撸瑸椤熬匦巍焙汀皺E圓”菜單項添加更新消息處理函數(shù)。在“類向?qū)А睂υ捒虻摹邦惷睓谙吕斜碇羞x擇CMyDrawView,在“命令”欄下的“對象ID”選擇框中選擇ID_RECTANGLE,在“消息”列表框中選擇UPDATE_COMMAND_UI,單擊“添加處理程序…”按鈕,接受系統(tǒng)默認函數(shù)名。單擊“編輯代碼”按鈕,為更新消息處理函數(shù)添加代碼,實現(xiàn)菜單單擊標記的更新。26voidCMyDrawView::OnUpdateRectangle(CCmdUI*pCmdUI){ //TODO:在此添加命令更新用戶界面處理程序代碼
pCmdUI->SetCheck(m_checkr);}用同樣的方法為“橢圓”菜單項添加更新消息處理函數(shù),并在相應的處理函數(shù)中添加代碼。voidCMyDrawView::OnUpdateEllipse(CCmdUI*pCmdUI){ //TODO:在此添加命令更新用戶界面處理程序代碼
pCmdUI->SetCheck(m_checke); pCmdUI->Enable(m_enable);//設置菜單項有效性}27(5)將“橢圓”菜單項變?yōu)榭捎茫崿F(xiàn)菜單項單擊標記“√”的顯示。展開“類視圖”中的類CMyDrawView,雙擊打開“矩形”和“橢圓”菜單項的消息處理函數(shù)OnRectangle()及OnEllipse(),在函數(shù)中添加如下有陰影部分的代碼。voidCMyDrawView::OnEllipse(){ //TODO:在此添加命令處理程序代碼
m_checke=true; m_checkr=false; m=2; Invalidate();}28voidCMyDrawView::OnRectangle(){ //TODO:在此添加命令處理程序代碼
m_enable=true; m_checkr=true; m_checke=false; m=1; Invalidate();}29(6)編譯、鏈接并運行程序,結(jié)果如圖4.7所示。圖中顯示的是單擊“矩形”菜單項后的效果。301、使用MFC項目模板創(chuàng)建快捷菜單在使用“MFC”項目模板創(chuàng)建MFC應用程序時,可以通過勾選向?qū)е械南嚓P(guān)設置,來為應用程序創(chuàng)建一個默認的快捷菜單。然后,在此基礎上對菜單資源進行編輯,以適合自己程序的需要。4.1.5快捷菜單為應用程序創(chuàng)建快捷菜單主要有以下兩種方法。31【例4.4】為例4.3中的應用程序MyDraw增加一個快捷菜單。程序運行后,用戶在視圖窗口中右擊,彈出一個快捷菜單,顯示主菜單“繪圖”下的所有菜單項。(1)啟動VisualStudioIDE,使用“MFC應用”項目模板創(chuàng)建一個單文檔應用程序。在“用戶界面功能”面板的“命令行(菜單/工具欄/功能區(qū))”下拉列表中,選擇“使用菜單欄和工具欄”選項,如圖4.8所示。32(2)應用程序創(chuàng)建完成后,生成并運行該程序。在窗口的視圖區(qū)右擊即可看到默認的快捷菜單,如圖4.9所示。33(3)在應用程序的主菜單中添加“繪圖”菜單項,并進行菜單命令的消息映射,實現(xiàn)菜單的繪圖功能。(4)編輯快捷菜單。展開“資源視圖”中的Menu文件夾,雙擊默認的快捷菜單資源IDR_POPUP_EDIT,打開菜單資源編輯器,刪除菜單POPUP下的默認菜單項。打開IDR_MAINFRAME菜單資源,將主菜單“繪圖”的所有菜單項復制到剪貼板上。返回到新菜單資源編輯器,將復制的內(nèi)容粘貼到新的快捷菜單上。這樣快捷菜單就具有了與“繪圖”主菜單完全相同的功能。如圖4.10所示。3435(5)編譯、鏈接并運行程序,在視圖區(qū)右擊,彈出快捷菜單,單擊“矩形”菜單項,結(jié)果如圖4.11所示。362、使用TrackPopupMenu()函數(shù)創(chuàng)建快捷菜單使用菜單資源編輯器和CMenu::TrackPopupMenu()函數(shù)來創(chuàng)建右鍵快捷菜單。CMenu::TrackPopupMenu函數(shù)的原型為:
BOOLTrackPopupMenu(UINTnFlags,intx,inty,CWnd*pWnd,LPCRECTlpRect=NULL);
該函數(shù)的功能是顯示一個右鍵快捷菜單。其中,nflags表示屏幕位置標志(見下表)。x、y分別表示菜單的水平坐標和頂端的垂直坐標;pWnd表示彈出菜單的窗口,包括全部的WM_COMMAND消息;lpRect表示一個矩形域,當單擊這個矩形域時菜單不消失。37參數(shù)nflags的含義38【例4.5】使用TrackPopupMenu()函數(shù)創(chuàng)建例4.3中的快捷菜單。(1)啟動VisualStudioIDE,打開例4.3中的項目MyDraw。(2)打開“添加資源”工具,向應用程序中添加一個新的菜單資源,并將新菜單的ID改為IDR_POPUP。雙擊“資源視圖”中Menu文件夾下的IDR_MAINFRAME,打開標準菜單編輯器,單擊“繪圖”菜單項并復制。雙擊新菜單資源IDR_POPUP,打開快捷菜單編輯器,單擊空白菜單項并粘貼。如圖4.12所示。3940(3)加載并顯示快捷菜單。打開“類向?qū)А惫ぞ?,在“類名”框中選擇CMyDrawView,選擇“消息”列表框中的WM_CONTEXTMENU,單擊“添加處理程序”按鈕,再單擊“編輯代碼”按鈕,在打開的WM_CONTEXTMENU消息處理函數(shù)中添加如下代碼。voidCMyDrawView::OnContextMenu(CWnd*pWnd,CPointpoint){ CMenumenu,*pPopup; menu.LoadMenu(IDR_POPUP);//加載快捷菜單
pPopup=menu.GetSubMenu(0); CWnd*pWndPopupOwner=this; pWndPopupOwner=pWndPopupOwner->GetParent(); //顯示快捷菜單 pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,pWndPopupOwner);}(4)編譯、鏈接并運行程序,得到與例4.4中相同的效果。41動態(tài)創(chuàng)建菜單分為以下3個步驟:(1)利用CreateMenu()函數(shù)創(chuàng)建一個空的彈出式菜單,該函數(shù)的原型為:
HMENUCreateMenu()
該函數(shù)沒有參數(shù),它的返回值是一個菜單句柄。(2)調(diào)用AppendMenu()或InsertMenu()函數(shù)在菜單中加入菜單項。(3)調(diào)用函數(shù)SetMenu()加載動態(tài)菜單。4.1.6創(chuàng)建動態(tài)菜單42【例4.6】為例4.4中的應用程序MyDraw創(chuàng)建一個“畫筆”動態(tài)菜單。程序運行后,用戶單擊“繪圖”|“矩形”菜單項,在主菜單中添加動態(tài)菜單“畫筆”,并通過此菜單的子菜單項繪制紅色矩形。(1)啟動VisualStudioIDE,打開例4.4中的項目MyDraw。(2)打開菜單項“繪圖”|“矩形”的消息處理函數(shù)OnRectangle(),并添加代碼,創(chuàng)建一個帶有“紅色矩形”菜單項的動態(tài)菜單“畫筆”。4344(3)為動態(tài)菜單添加消息處理函數(shù)。為了響應動態(tài)菜單的消息,需要利用“類向?qū)А惫ぞ咧匦露xOnCmdMsg()函數(shù)。打開“類向?qū)А惫ぞ?,在“類名”框中選擇CMyDrawView,選擇“虛函數(shù)”列表框中的OnCmdMsg,單擊“添加函數(shù)”按鈕,再單擊“編輯代碼”按鈕,在函數(shù)中添加如下代碼。45在CMyDrawView類中增加兩個函數(shù):voidDoSelectMenu()和DoUpdateSelectMenu(CCmdUI*pCmdUI)。前一個函數(shù)的功能是選取動態(tài)菜單,后一個的功能為更新菜單的狀態(tài)。46(4)編譯、鏈接并運行程序。首先單擊“繪圖”|“矩形”菜單命令,菜單欄中動態(tài)增加“畫筆”主菜單,單擊“畫筆”|“紅色矩形”菜單項,繪制紅色矩形,如圖4.13所示。47從第2章可知,利用“MFC項目模板”可以生成基于對話框的應用程序?;趯υ捒虻膽贸绦蛟谶\行時并沒有菜單欄。下面我們通過實例來討論如何給它創(chuàng)建一個菜單。4.1.7創(chuàng)建基于對話框的菜單【例4.7】編寫一個基于對話框的應用程序Li4_7,為該應用程序添加一個菜單。菜單包括“文件”、“編輯”、“視圖”和“幫助”4個主菜單項。48(1)利用“MFC應用”項目模板,生成基于對話框的應用程序Li4_7。(2)展開“資源視圖”中的Dialog文件夾,雙擊IDD_LI4_7_DIALOG對話框資源,打開對話框資源編輯器。刪除“確定”、“取消”按鈕控件及靜態(tài)文本控件“TODO:在此放置對話控件”。(3)打開“添加資源”工具插入一個新的菜單資源。系統(tǒng)默認新增菜單的默認ID為ID_MENU1。(4)雙擊“資源視圖”中的ID_MENU1菜單資源,打開菜單編輯器。為該菜單添加“文件”、“編輯”、“視圖”和“幫助”4個主菜單項。49(5)雙擊“資源視圖”中Dialog文件夾下的IDD_LI4_7_DIALOG,打開對話框資源編輯器。將對話框的“菜單”屬性值設置為IDR_MENU1,將菜單和應用程序的主窗口連接起來。如圖4.15所示。50(6)編譯、鏈接并運行程序,結(jié)果如圖4.16所示。514.2工具欄在MFC中,工具欄的功能由類CToolBar實現(xiàn)。工具欄資源和工具欄類CToolBar是工具欄的兩個要素。創(chuàng)建工具欄的基本步驟是:創(chuàng)建工具欄資源;構(gòu)建一個CToolBar對象;調(diào)用CToolBar::Create()或CreateEx()函數(shù)創(chuàng)建工具欄窗口;調(diào)用CToolBar::LoadToolBar載入工具欄資源。52使用工具欄編輯器來編輯工具欄資源。雙擊“資源視圖”中的Toolbar工具欄資源,即可打開工具欄編輯器,如圖4.17所示。4.2.1編輯工具欄531、添加按鈕在工具欄編輯器中,單擊工具欄上的空白按鈕,并在屬性窗口中編輯按鈕的ID、寬度與高度值。如圖4.18所示。542、刪除按鈕將按鈕拖出工具欄外,即可刪除該按鈕。3、編輯按鈕位圖設置按鈕位圖有以下兩種方法。利用繪圖工具與調(diào)色板直接進行繪制先利用專用繪圖軟件制作,然后粘貼到按鈕上55要實現(xiàn)按鈕的功能,通常只需讓一個按鈕的ID值與同樣功能菜單項的ID值相同即可。如果按鈕沒有對應菜單項,則必須利用“類向?qū)А惫ぞ咛砑右粋€消息處理函數(shù)。4.2.2實現(xiàn)按鈕功能【例4.8】編編輯例4.4中的應用程序MyDraw。刪除默認工具欄上的“打印”按鈕,在其后為新增的菜單項配備相應的按鈕,并在“幫助”按鈕前添加“上一頁”和“下一頁”2個按鈕,當用戶單擊這兩個按鈕后,視圖中分別顯示文本“這是《上一頁》按鈕!”和“這是《下一頁》按鈕!”。56(1)啟動VisualStudioIDE,打開例4.4中的項目MyDraw。選擇“資源視圖”并展開Toolbar文件夾,雙擊IDR_MAINFRAME工具欄資源,打開工具欄資源編輯器。(2)單擊工具欄上代表“打印”的打印機圖標按鈕,將其拖出工具欄外,刪除該按鈕。(3)為新增的“矩形”及“橢圓”菜單項配備相應的按鈕。單擊工具欄上“幫助”按鈕后的空白按鈕,用繪圖工具及調(diào)色板制作“矩形”按鈕。在該按鈕的屬性窗口中設置其ID為ID_RECTANGLE,高度和寬度采用默認值。用同樣的方法定義“橢圓”按鈕,為其選擇ID為ID_ELLIPSE。57(4)用鼠標將工具欄最后的空白框拖至“幫助”按鈕前,用繪圖工具及調(diào)色板制作“上一頁”按鈕。在該按鈕的屬性窗口中設置其ID為ID_FORWARD,高度和寬度均為20。用同樣的方法定義一個“下一頁”按鈕,設置其ID為ID_NEXT。(5)為兩個新按鈕添加消息處理函數(shù)。由于新按鈕沒有與之對應的菜單項,因此,需利用“類向?qū)А惫ぞ呓o它們添加消息處理函數(shù)。打開“類向?qū)А惫ぞ撸凇邦惷笨蛑羞x擇CMyDrawView類,在“命令”選項卡的“對象ID”列表中選擇ID_FORWARD,在“消息”框中選擇COMMAND,單擊“添加處理程序”按鈕,再單擊“編輯代碼”按鈕,在函數(shù)中添加代碼。58voidCMyDrawView::OnForward(){ //TODO:在此添加命令處理程序代碼
CClientDCdc(this);dc.TextOut(50,50,L"這是《上一頁》按鈕!");}用同樣的方法為“下一頁”按鈕添加消息處理函數(shù)OnNext(),將輸出的文本改為“這是《下一頁》按鈕!”。59(6)編譯、鏈接并運行程序。單擊“上一頁”按鈕,結(jié)果如圖4.19所示。60向?qū)傻臉藴使ぞ邫诘腎D值為IDR_MAINFRAME。對一些功能復雜的應用程序,需要創(chuàng)建多個不同的工具欄。生成工具欄的基本步驟:(1)添加工具欄資源; (2)參照MFC應用程序框架添加工具欄的方法,構(gòu)造一個CToolBar類的對象,調(diào)用CToolBar::Create()或CreateEx()函數(shù)創(chuàng)建工具欄窗口;(3)調(diào)用CToolBar::LoadToolBar()函數(shù)載入工具欄資源。除這些基本步驟之外,還可以調(diào)用其他相關(guān)函數(shù)從而進一步改善工具欄4.2.3自定義工具欄的操作611、創(chuàng)建工具欄窗口調(diào)用CToolBar::Create()或CreateEx()函數(shù)創(chuàng)建并初始化工具欄窗口對象。若創(chuàng)建成功,函數(shù)返回TRUE,否則返回FALSE。2、裝載工具欄資源調(diào)用LoadToolBar()函數(shù)裝載工具欄資源。用Create()或者CreateEx()函數(shù)創(chuàng)建工具欄,其實只是獲得了一個窗口句柄,工具欄窗口中位圖按鈕的加載是靠LoadToolBar()函數(shù)來完成的。若加載成功,將返回TRUE,否則返回FALSE。623、設置工具欄風格如果在調(diào)用初始化函數(shù)CToolBar::Create()或者CreateEx()時設置的工具欄風格不滿足需要,可以再用SetBarStyle()函數(shù)重新進行設置。4、設置工具欄??刻匦栽O置工具欄停靠特性,需要調(diào)用EnableDocking()函數(shù)。既要調(diào)用CControlBar::EnableDocking()函數(shù)設置工具欄的??刻匦裕€要調(diào)用框架類的成員函數(shù)EnableDocking()函數(shù)來設置框架窗口以允許它的子窗口控制欄可以以何種方式??俊2还芤粋€框架窗口中有多少個子窗口控制欄,該函數(shù)只需調(diào)用一次。635、設置工具欄的初始??课恢猛ㄟ^調(diào)用CFrameWnd::DockControlBar()函數(shù)定位一個工具欄的初始停靠位置。6、移動工具欄調(diào)用CFrameWnd::FloatControlBar()函數(shù)來移動、定位一個工具欄。7、工具欄隱顯控制通過對函數(shù)CWnd::SetStyle()的調(diào)用可以改變某些工具欄窗口的風格,但該函數(shù)不能改變WS_VISIBLE,只能通過父類CWnd的ShowWindow()成員函數(shù)來顯示或隱藏工具欄。64【例4.9】編寫一個單文檔應用程序Li4_9。為該應用程序創(chuàng)建一個帶有“線”、“圓”、“矩形”和“文本”4個按鈕的工具欄,當用戶單擊工具欄上的按鈕時,在窗口中顯示相應的圖形。65(1)啟動VisualStudioIDE,使用“MFC應用”項目模板在chap04解決方案中創(chuàng)建一個單文檔應用程序Li4_9框架。(2)打開“添加資源”工具,選擇Toolbar資源,單擊“新建”按鈕插入一個新的工具欄資源,其ID接受系統(tǒng)默認IDR_TOOLBAR1。在隨后打開的工具欄資源編輯器中創(chuàng)建各個按鈕,并設置屬性,見表4.7。66工具欄按鈕屬性67(3)在應用程序中添加代碼,完成工具欄的創(chuàng)建、裝載以及風格設置。①切換到“類視圖”窗口,在CMainFrame上右擊,在彈出的快捷菜單中選擇“添加”|“添加變量…”,加入工具欄類對象m_wndToolBar1。②打開文件MainFrm.cpp,在函數(shù)OnCreate()的“return0;”語句前添加如下代碼。6869(4)利用“類向?qū)А惫ぞ邽楣ぞ邫谏细靼粹o映射消息處理函數(shù),并在函數(shù)中添加相應的繪圖代碼。704.3狀態(tài)欄狀態(tài)欄實際上是一個窗口,一般分為幾個窗格,每個窗格顯示不同的信息。使用“MFC應用”項目模板創(chuàng)建一個單文檔應用程序,其他接受默認選項時,生成的應用程序自動創(chuàng)建帶有默認窗格的狀態(tài)欄。71
在MFC中,狀態(tài)欄的功能由CStatusBar類實現(xiàn)。4.3.1狀態(tài)欄類的繼承關(guān)系72
4.3.2狀態(tài)欄類的成員函數(shù)73利用“MFC應用”項目模板創(chuàng)建應用程序時,首先在CMainFrame類中定義一個成員變量m_wndStatusBar,它是狀態(tài)欄類CStatusBar的對象。其次在MFC應用程序框架的實現(xiàn)文件MainFrm.cpp中,為狀態(tài)欄定義一個靜態(tài)數(shù)組indicators,如下代碼。4.3.3狀態(tài)欄操作74
這個全局的提示符數(shù)組indicators中的每個元素代表狀態(tài)欄上一個窗格的ID值,這些ID在應用程序的串表資源StringTable中進行了說明。通過增加新的ID標識來增加用于顯示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.1 國家是什么(導學案) 高二政治 (統(tǒng)編版選擇性必修1)
- 印刷機械行業(yè)智能化發(fā)展的市場機遇分析考核試卷
- 2025年銷售傭金合同范本與業(yè)績激勵方案3篇
- 2025版木工行業(yè)培訓與認證服務合同范本4篇
- 2025年商業(yè)委托銷售協(xié)議
- 2025年合法住房公租房協(xié)議
- 二零二五年度駕校品牌推廣與市場拓展合作合同2篇
- 2025年度個人二手車轉(zhuǎn)讓及二手車增值服務合同3篇
- 二零二五年度林業(yè)苗木繁育基地承包合同4篇
- 二零二五年度集體產(chǎn)權(quán)房屋買賣合同樣本(含房屋產(chǎn)權(quán)調(diào)查及核實要求)
- 《醫(yī)院財務分析報告》課件
- 2025老年公寓合同管理制度
- 2024-2025學年人教版數(shù)學六年級上冊 期末綜合卷(含答案)
- 2024中國汽車后市場年度發(fā)展報告
- 感染性腹瀉的護理查房
- 天津市部分區(qū)2023-2024學年高二上學期期末考試 物理 含解析
- 《人工智能基礎》全套英語教學課件(共7章)
- 廢鐵收購廠管理制度
- 物品賠償單范本
- 《水和廢水監(jiān)測》課件
- 滬教版六年級數(shù)學下冊課件【全冊】
評論
0/150
提交評論