Visual C++程序設(shè)計教程課件第5章_第1頁
Visual C++程序設(shè)計教程課件第5章_第2頁
Visual C++程序設(shè)計教程課件第5章_第3頁
Visual C++程序設(shè)計教程課件第5章_第4頁
Visual C++程序設(shè)計教程課件第5章_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章菜單、工具欄與狀態(tài)欄

5.1編輯菜單資源

Windows中的菜單由頂層的水平列表項以及分別與各項相連的下拉式菜單所組成。5.1.1系統(tǒng)生成的菜單

當(dāng)用AppWizard自動生成一個應(yīng)用程序框架時,應(yīng)用程序中已經(jīng)被加入了多種資源。 如果在AppWizard的Step1對話框中選擇創(chuàng)建的是基于單文檔SDI或基于多文檔MDI的應(yīng)用程序,則在應(yīng)用程序的資源項中將自動包含菜單資源。5.1.1.1SDI應(yīng)用程序中自動生成的菜單

5.1.1.2MDI應(yīng)用程序中自動生成的菜單

5.1.1.2MDI應(yīng)用程序中自動生成的菜單(續(xù))

5.1.2菜單的編輯

菜單編輯器的作用:創(chuàng)建標(biāo)準(zhǔn)的菜單和命令;移動菜單和命令;編輯菜單項屬性。5.1.2菜單的編輯(實例)步驟1:運行AppWizard創(chuàng)建單文檔工程Eg5_1步驟2:添加菜單資源5.2使用ClassWizard添加消息處理函數(shù)

操作步驟:1.確定打開了Eg5_1工作空間Eg5_1.dsw。2.選擇View|ClassWizard菜單項,彈出MFCClassWizard對話框。3.在Classname下拉式列表中選擇視圖類CEg5_1View,在ObjectIDs列表框中選擇ID_MESSAGE_DISPLAY。4.在Messages列表框中的COMMAND上雙擊鼠標(biāo)左鍵,或者在其上單擊左鍵,然后按AddFunction按鈕,在彈出的AddMemberFunction對話框中直接按OK按鈕。5.2使用ClassWizard添加消息處理函數(shù)(續(xù))

5.按EditCode按鈕,或在Memberfunctions列表框中雙擊新添的函數(shù),退出ClassWizard轉(zhuǎn)入到文本編輯,為該函數(shù)添加執(zhí)行代碼。代碼如下:5.2使用ClassWizard添加消息處理函數(shù)(續(xù))voidCEg5_1View::OnMessageDisplay(){//TODO:AddyourcommandhandlercodehereMessageBox("這是一個簡單的對話框");}voidCEg5_1View::OnMessageStyleOkcancel(){ //TODO:Addyourcommandhandlercodehere

MessageBox("這是一個有確定和取消按鈕的對話框", "OKCANCEL對話框",MB_OKCANCEL);}5.2使用ClassWizard添加消息處理函數(shù)(續(xù))voidCEg5_1View::OnMessageChange(){ //TODO:Addyourcommandhandlercodehere

MessageBox("這個對話框的標(biāo)題已經(jīng)改變了",

"新對話框");}voidCEg5_1View::OnMessageStyleYesno(){ //TODO:Addyourcommandhandlercodehere

MessageBox("這是一個有Yes和No按鈕的消息框", "YESNO消息框",MB_YESNO);}5.2.2

MessageBox()函數(shù)

在這個實例中,主要用到了MessageBox()函數(shù)。MessageBox()函數(shù)的作用是用于一個消息框,它是一個預(yù)定義對話框。MessageBox()函數(shù)包括三個參數(shù):第一個參數(shù)表示消息框要顯示的文本;第二個參數(shù)代表消息框的標(biāo)題;第三個參數(shù)代表顯示風(fēng)格。5.3加入鍵盤加速鍵

5.3.1鍵盤加速鍵的含義

鍵盤加速鍵應(yīng)用程序定義的鍵盤上的某一個鍵或兩至三個鍵的組合,給用戶提供一種選擇菜單項和執(zhí)行某些任務(wù)的快速方法。鍵盤加速鍵可以和菜單項關(guān)聯(lián),也可以定義某些菜單上沒有提供的命令。5.3.2添加鍵盤加速鍵

操作步驟:1.在工作區(qū)中選擇ResourceView標(biāo)簽,展開Menu項,雙擊IDR_MAINFRAME,修改菜單項的屬性。如下圖所示:5.3.2添加鍵盤加速鍵(續(xù)) 2.在工作區(qū)中單擊ResourceView標(biāo)簽,展開Accelerator項,在IDR_MAINFRAME上雙擊左鍵,啟動AppStudio之加速鍵資源編輯器,客戶區(qū)中打開一個用于編輯加速鍵的窗口。5.3.2添加鍵盤加速鍵(續(xù))客戶區(qū)中打開的加速鍵編輯窗口:5.3.2添加鍵盤加速鍵(續(xù))3.在最后的虛框上雙擊鼠標(biāo)左鍵,或者單擊右鍵并在彈出的菜單中選擇NewAccelerator菜單項,彈出如圖所示的加速鍵屬性(AccelProperties)對話框。5.3.2添加鍵盤加速鍵(續(xù))加速鍵屬性對話框:5.3.2添加鍵盤加速鍵(續(xù))4.編譯、鏈接、運行。5.4工具欄和狀態(tài)欄

在這一節(jié)中,介紹如何為應(yīng)用程序創(chuàng)建適合自己的狀態(tài)條和工具條:如何在工具條中加自己的圖形按鈕以及如何控制它的外形、如何來禁止?fàn)顟B(tài)條顯示正常的菜單提示和鍵盤狀態(tài)指示,使得可以把狀態(tài)條另作它用。5.4.1工具欄

工具欄提供一個既漂亮又快捷的命令選擇界面,它已漸漸成為應(yīng)用程序的基本配件。 工具欄提供了另一種選擇,它可以彌補(bǔ)菜單和加速鍵的缺陷,在使用上非常便捷,而且以圖形代替文字說明,賦予程序更親切的用戶界面。5.4.2用MFC創(chuàng)建工具欄

使用MFC建立工具欄的基本步驟如下:1.先使用VisualC++6.0工作平臺中的資源編輯器中打開資源,打開Toolbar中工具條的位圖資源,然后根據(jù)自己的需要建立和修改工具欄。2.在程序中建立一個CToolBar對象。

5.4.2用MFC創(chuàng)建工具欄(續(xù))//修改主框架MainFrm.h文件,增加工具欄對象數(shù)據(jù)成員說明classCMainFrm:public

CMDIFrameWnd{…protected:CToolBarm_wndToolVar;//工具欄對象…}5.4.2用MFC創(chuàng)建工具欄(續(xù))3.調(diào)用CToolBar類的Create()成員函數(shù)建立窗口的工具欄,該函數(shù)同時會將工具欄子窗口與CToolBar對象連結(jié)在一起。4.調(diào)用CToolBar類的LoadBitmap()成員函數(shù)裝入工具欄命令按鈕組的圖形位圖資源。5.調(diào)用CToolBar類的SetButtons()成員函數(shù)設(shè)定工具欄中的命令按鈕風(fēng)格,并賦予每個命令按鈕在位圖資源中的圖形。5.4.3創(chuàng)建一個實際的工具欄

5.4.3.1創(chuàng)建工程5.4.3.2添加工具欄上新建按鈕的位圖資源5.4.3.3創(chuàng)建菜單資源5.4.3.4添加成員變量5.4.3.5添加程序代碼5.4.3.6添加響應(yīng)函數(shù)5.4.4狀態(tài)欄

5.4.4.1狀態(tài)欄的構(gòu)成

狀態(tài)欄分成兩部分:左邊是狀態(tài)信息行,右邊是狀態(tài)指示器。狀態(tài)信息行用來顯示程序動態(tài)提供一些字符串狀態(tài)指示器用來顯示一些狀態(tài)信息,默認(rèn)的有三個鍵的狀態(tài),依次為:CapsLock鍵、NumLock鍵和ScrollLock鍵的狀態(tài)5.4.4.2為應(yīng)用程序添加狀態(tài)欄

步驟1:定位到文件MainFrm.cpp文件,添加如下代碼:staticUINTindicators[]={ ID_SEPARATOR,//statuslineindicator

ID_SEPARATOR,//顯示x坐標(biāo)信息

ID_SEPARATOR,//顯示x坐標(biāo)信息

ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL,};5.4.4.2為應(yīng)用程序添加狀態(tài)欄(續(xù))步驟2:為狀態(tài)欄添加標(biāo)識號。 通過菜單View|ResourceSymbols打開ResourceSymbols對話框,單擊New按鈕,添加名為IDC_STATUSBAR的標(biāo)識號,數(shù)值取默認(rèn)值。5.4.4.2為應(yīng)用程序添加狀態(tài)欄(續(xù))步驟3:定位到函數(shù)CMainFrame::OnCreate,在其中添加狀態(tài)欄的設(shè)置代碼:intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){…//TODO:Deletethesethreelinesifyoudon'twantthetoolbarto //bedockable

//設(shè)置狀態(tài)信息行的寬度

//x坐標(biāo)信息窗口

m_wndStatusBar.SetPaneInfo(1,IDC_STATUSBAR,SBPS_POPOUT,50); //y坐標(biāo)信息窗口

m_wndStatusBar.SetPaneInfo(2,IDC_STATUSBAR,SBPS_POPOUT,50);…}5.4.4.2為應(yīng)用程序添加狀態(tài)欄(續(xù))步驟4:定位到文件MainFrm.h中類的定義處,將成員變量m_wndStatusBar和m_wndToolBar的保護(hù)類型(protected)改為公用類型(public)。5.4.4.2為應(yīng)用程序添加狀態(tài)欄(續(xù))步驟5:通過ClassWizard在類CEg5_2View中添加WM_MOUSEMOVE消息的響應(yīng)函數(shù)(在標(biāo)識號ObjectIDs項中選中CEg5_2View),并添加代碼如下:5.4.4.2為應(yīng)用程序添加狀態(tài)欄(續(xù))voidCEg5_2View::OnMouseMove(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault

charPositionString[50]; //獲取主框架指針

CMainFrame*MFrame=(CMainFrame*)AfxGetMainWnd(); //在狀態(tài)信息行1中顯示X坐標(biāo)

sprintf(PositionString,"X:%d",point.x); MFrame->m_wndStatusBar.SetPaneText(1,PositionString);//在狀態(tài)信息行2中顯示Y坐標(biāo)

sprintf(PositionString,"Y:%d",point.y); MFrame->m_wndStatusBar.SetPaneText(2,PositionString);

CView::On

溫馨提示

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

評論

0/150

提交評論