C++實驗四總結(jié)報告_第1頁
C++實驗四總結(jié)報告_第2頁
C++實驗四總結(jié)報告_第3頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實驗十常用控件(1)實驗?zāi)康暮鸵螅?)創(chuàng)建一個默認(rèn)的對話框應(yīng)用程序Ex_Ctrls,如圖2.1所示。(2)設(shè)計一個如圖22所示的“課程信息”對話框。21D5221軟件工程或虹程及苴自動牝?qū)?6020itIfh退出|課握號;取消|課程歸:所屆我:諜程類型;賊執(zhí):謨吋數(shù):圖2.2“課程信息”對話框圖2.1Ex_Ctrls對話框(3)實現(xiàn)功能:單擊圖2.1中的“課程信息”按鈕,彈出“學(xué)生基本信息”對話框,單擊“添加”按鈕,對話框內(nèi)容顯示在圖2.1中的列表框中。實驗準(zhǔn)備和說明(1)具備知識:靜態(tài)控件、按鈕、編輯框、旋轉(zhuǎn)按鈕控件、列表框和組合框控件。(2)創(chuàng)建本次實驗工作文件夾“VisualC+程序

2、實驗實驗2”。實驗內(nèi)容和步驟1. 啟動VisualC+6.0打開計算機(jī),啟動VisualC+6.0系統(tǒng)。2. 創(chuàng)建一個默認(rèn)的對話框應(yīng)用程序Ex_Ctrls 選擇“文件”新建”菜單,在彈出的“新建”對話框中選擇“工程”頁面,選擇MFCAppWizard(exe),在工程框中輸入Ex_Ctrls,并將工程文件夾定位到“VisualC+程序?qū)嶒瀸嶒?”。 單擊“確定”按鈕,在出現(xiàn)的Step1對話框中選擇“基本對話(框)”應(yīng)用程序類型,單擊“完成”按鈕。 在對話框編輯器中,單擊對話框工具欄上的切換網(wǎng)格按鈕BS,顯示對話框網(wǎng)格,將對話框標(biāo)題改為“使用控件”。 調(diào)整對話框的大小,刪除對話框中間的“TODO

3、:在這里設(shè)置對話控制。”靜態(tài)文本控件和“確定”按鈕控件,將“取消”按鈕標(biāo)題改為“退出”,并移至對話框的下方。 向?qū)υ捒蛑刑砑咏M框(Group)控件,標(biāo)題設(shè)為“添加”,然后調(diào)整其大小和位置。 添加一個按鈕,標(biāo)題設(shè)為“課程信息”,ID設(shè)為IDC_BUTTON_COURSE。 添加一個列表框,取其默認(rèn)ID號,去掉Sort風(fēng)格屬性。3. 添加并設(shè)計“課程信息”對話框 按Ctrl+R快捷鍵,彈出“插入資源”對話框,在資源類型列表中選擇Dialog,單擊“新建”按鈕。 將該對話框資源的ID設(shè)為IDD_COURSE,標(biāo)題設(shè)為“課程信息”,字體設(shè)為“宋體,9號”。 將OK和Cancel按鈕的標(biāo)題改為“添加”和

4、“取消”。 打開對話框網(wǎng)格,參看圖2.2的控件布局,為對話框添加如表2.1所示的一些控件。表2.1課程信息對話框添加的控件添加的控件ID號題其他屬性編輯框(課程號)IDC_EDIT_COURSENO默認(rèn)編輯框(課程名稱)IDC_EDIT_COURSENAME默認(rèn)組合框(所屬專業(yè))IDC_COMBO_SPECIAL默認(rèn)組合框(課程類型)IDC_COMBO_TYPE默認(rèn)編輯框(開課學(xué)期)IDC_EDIT_OPEN默認(rèn)旋轉(zhuǎn)按鈕IDCSPIN1Autobuddy、Setbuddyinteger、Right對齊,其余默認(rèn)編輯框(課時數(shù))IDC_EDIT_COURSEHOURS默認(rèn)編輯框(學(xué)分)IDC_E

5、DIT_CREDIT默認(rèn) 右擊添加的課程類型的組合框控件,從彈出的快捷菜單中選擇“屬性”命令,將其屬性對話框切換到Data頁面,直接輸入內(nèi)容,輸入一行后按Ctrl+回車鍵添加另一行。同樣對另一個組合框控件也進(jìn)行修改。結(jié)果如圖2.3所示。也進(jìn)行修改。結(jié)果如圖2.3所示。GeneralDataStyles|ExtendedStylES|CoaboBoxPropertiesComboBox屋性占覽常規(guī)1數(shù)據(jù):RiJIBIIUIBIlUialBIUIBIUlji1樣式擴(kuò)修修訶修選目固:動動自ST及簷工工子化械氣電動機(jī)電圖2.3課程類型組合框內(nèi)容輸入 按Ctrl+W快捷鍵或雙擊對話框資源模板的空白處,為

6、IDD_COURSE創(chuàng)建一個對話框CCourseDIg。 打開ClassWizard的MemberVariables頁面,看Classname是否是CCourseDlg,選中所需的控件ID號,雙擊鼠標(biāo)。依次為表2.2控件增加成員變量。表2.2控件變量控件ID號變量類別變量類型變量名范圍和大小IDC_EDIT_COURSENOValueCStringm_strNOIDC_EDIT_COURSENAMEValueCStringm_strNameIDC_COMBO_SPECIALValueCStringm_strSpecialIDC_COMBO_SPECIALControlCComboBoxm_co

7、mboSpecialIDC_COMBO_TYPEValueCStringm_strTypeIDC_EDIT_OPENValueBYTEm_nOpenIDC_SPIN1ControlCSpinButtonCtrlm_spinOpenIDC_EDIT_COURSEHOURSValueintm_nHoursIDCEDITCREDITValuefloatmfCredit4.添加CCourseDIg類代碼 用MFCClassWizard為CCourseDIg類添加WMNITDIALOG消息映射,并添加下列初始化代碼:BOOLCCourseDlg:OnlnitDialog()CDialog:OnlnitD

8、ialog();m_spinOpen.SetRange(1,8);m_nHours=60;m_fCredit=2.0;m_nOpen=1;m_strType="專修"m_strSpecial="機(jī)械工程及其自動化"/有改動UpdateData(FALSE);returnTRUE;/returnTRUEunlessyousetthefocustoacontrol 用MFCClassWizard為按鈕IDOK添加BN_CLICKED的消息映射,并增加下列代碼:voidCCourseDlg:OnOK()UpdateData();m_strNO.TrimLeft

9、();if(m_strNO.IsEmpty()MessageBox("課程號不能為空!”);return;m_strName.TrimLeft();if(m_strName.IsEmpty()MessageBox("課程名稱不能為空!”);return;CDialog:OnOK();5.添加CEx_CtrIsDIg程序代碼 按Ctrl+W快捷鍵,打開MFCClassWizard對話框,為列表框控件IDC_LIST1添加控件變量m_List,類型為CListBox。 用MFCClassWizard為按鈕IDC_BUTTON_COURSE添加BN_CLICKED消息映射,并添加

10、下列代碼:voidCEx_CtrlsDlg:OnButtonCourse()CCourseDlgdlg;if(IDOK!=dlg.DoModal()return;/清除列表框原來的顯示內(nèi)容while(m_List.GetCount()!=O)m_List.DeleteString(0);m_List.AddString("課程號:"+dlg.m_strNO);m_List.AddString("課程名稱:"+dlg.m_strName);m_List.AddString("所屬專業(yè):"+dlg.m_strSpecial);m_List

11、.AddString("課程類型:"+dlg.m_strType);CStringstr;str.Format(”開課學(xué)期:d",dlg.m_nOpen);m_List.AddString(str);str.Format(”課時數(shù):%d",dlg.m_nHours);m_List.AddString(str);str.Format(”學(xué)分:3.1f",dlg.m_fCredit);m_List.AddString(str); 在Ex_CtrlsDlg.cpp文件的前面添加ClnputDlg的頭文件包含:#include"Ex_Ctrl

12、sDlg.h"#include"CourseDlg.h"在“工程”一“設(shè)置”常規(guī)選項里,選擇使用MFC作為靜態(tài)鏈接庫 編譯運(yùn)行并測試。6.寫出實驗報告分析上述運(yùn)行結(jié)果以及思考與練習(xí),寫出實驗報告。思考與練習(xí)(1)為CCourseDlg類添加一個公有型CString成員變量m_strOKText,當(dāng)通過CCourseDlg類對象將m_strOKText設(shè)為"修改”,CCourseDlg對話框中的"添加”按鈕標(biāo)題變成"修改”,試編程實現(xiàn)。(2)由于每學(xué)期的一門課程學(xué)分一般不超過6個學(xué)分,因此若將學(xué)分編輯框改為組合框,應(yīng)如何修改和編程?實驗

13、十一常用控件(2)實驗?zāi)康暮鸵?1) 設(shè)計一個如圖3.1所示的“學(xué)生基本信息”對話框。(2) 在實驗2的基礎(chǔ)上,實現(xiàn)功能:在圖2.1中的“課程信息”按鈕下方添加一個“學(xué)生基本信息”按鈕,單擊該按鈕,彈出“學(xué)生基本信息”對話框,單擊“添加”按鈕,學(xué)生基本信息顯示在列表框中。(3) 在CEx_CtrlsDlg對話框中添加一個滾動條和兩個滑動條來調(diào)整對話框的背景顏色的3個分量:R(紅色分量)、G(綠色分量)和B(藍(lán)色分量),結(jié)果如圖3.2所示。圖3.1“學(xué)生基本信息”對話框圖3.2設(shè)置對話框背景顏色實驗準(zhǔn)備和說明(1) 具備知識:滾動條、進(jìn)展條、滑動條、時間和日歷控件。(2) 創(chuàng)建本次實驗工作文件

14、夾“'VisualC+程序?qū)嶒瀸嶒?”。實驗內(nèi)容和步驟1.在實驗3的工作文件夾中復(fù)制Ex_Ctrls文件夾將本書實驗2中的Ex_Ctrls文件夾復(fù)制到實驗3的工作文件夾中。2. 啟動VisualC+6.0啟動VisualC+6.0系統(tǒng)。3. 創(chuàng)建并添加“學(xué)生基本信息”對話框 選擇“文件”t“打開工作區(qū)”菜單,將“'VisualC+程序?qū)嶒瀸嶒?Ex_Ctrls”文件夾中的Ex_Ctrls項目打開。 添加一個新的對話框資源,將ID號改為IDD_INPUT,標(biāo)題為“學(xué)生成績輸入”,將對話框字體改為“宋體,9號”。將0K和Cancel按鈕標(biāo)題改為“確定”和“取消”。 調(diào)整對話框的大小

15、,將“確定”和“取消”按鈕移至對話框的下方,然后顯示對話框網(wǎng)格。 參看圖3.1,向?qū)υ捒蛱砑尤绫?.1所示的控件。添加兩個“單選按鈕”并在第一個按鈕“男”的屬性一常規(guī)選項勾選“組”,并對第一個按鈕增加成員變量int型mbMale。第二個按鈕不用勾選和增加。表3.1學(xué)生基本信息對話框添加的控件添加的控件ID號標(biāo)題其他屬性編輯框IDC_EDIT_NAME默認(rèn)編輯框IDC_EDIT_NO默認(rèn)編輯框IDC_EDIT_S1默認(rèn)旋轉(zhuǎn)按鈕控件IDC_SPIN_S1Autobuddy、Right對齊編輯框IDC_EDIT_S2默認(rèn)旋轉(zhuǎn)按鈕控件IDC_SPIN_S2Autobuddy、Setbuddyinteg

16、er、Right對齊編輯框IDC_EDIT_S3默認(rèn)旋轉(zhuǎn)按鈕控件IDC_SPIN_S3AutobudOdy、Setbuddyinteger、Right對齊編輯框IDCSPECIAL默認(rèn) 雙擊對話框模板空白處,為該對話框模板創(chuàng)建一個對話框類ClnputDlg。 在MFCClassWizard的MemberVariables頁面中,確定Classname中是否已選擇了CInputDIg,選中所需的控件ID號,雙擊鼠標(biāo)或單擊AddVariables按鈕。依次為表3.2控件增加成員變量。表3.2控件變量控件ID號變量類別變量類型變量名范圍和大小IDC_EDIT_NAMEValueCStringm_st

17、rName20IDC_EDIT_NOValueCStringm_strNo20IDC_EDIT_S1ValueintmScore10.0100.0IDC_SPIN_S1ControlCSpinButtonCtrlm_spinScore1IDC_EDIT_S2Valueintm_fScore20.0100.0IDC_SPIN_S2ControlCSpinButtonCtrlm_spinScore2IDC_EDIT_S3Valueintm_fScore30.0100.0IDC_SPIN_S3ControlCspinButtonCtrlm_spinScore3IDCSPECIALValueCStri

18、ngmstrSpecial 在MFCClassWizard的MesssageMaps頁面中,為ClnputDIg添加WMNITDIALOG消息映射,并添加下列代碼:BOOLClnputDlg:OnlnitDialog()CDialog:OnlnitDialog();m_spinScore1.SetRange(0,100);/設(shè)置旋轉(zhuǎn)按鈕控件范圍m_spinScore2.SetRange(0,100);m_spinScore3.SetRange(0,100);returnTRUE;/returnTRUEunlessyousetthefocustoacontrol 用MFCClassWizard為

19、ClnputDlg增加IDC_SPIN_S1控件的UDN_DELTAPOS消息映射,并添加下列代碼:voidClnputDlg:OnDeltaposSpinS1(NMHDR*pNMHDR,LRESULT*pResult)NMJJPDOWN*pNMUpDown=(NM_UPDOWN*)pNMHDR;UpdateData(TRUE);/將控件的內(nèi)容保存到變量中m_fScore1+=(float)pNMUpDown->iDelta*0.5;將m_fScore1等定義為int型if(m_fScore1<0)m_fScore1=0;if(m_fScore1>100)m_fScore1=

20、100;UpdateData(FALSE);/將變量的內(nèi)容顯示在控件中*pResult=0; 打開IDD_EX_CTRLS_DIALOG對話框資源,在“課程信息”按鈕下方添加一個“學(xué)生基本信息”按鈕,并將ID號設(shè)為IDC_BUTTON_STUINFO。 用MFCClassWizard為按鈕IDC_BUTTON_STUINFO添加BN_CLICKED消息映射,并添加下列代碼:voidCEx_CtrlsDlg:OnButtonStuinfo()ClnputDlgdlg;if(IDOK!=dlg.DoModal()return;while(m_List.GetCount()!=0)m_List.De

21、leteString(O);CStringstrSex("男");if(dlg.m_bMale)strSex="女"str.Format(”出生日期:d-%d-%d",dlg.m_fScore1,dlg.m_fScore2,dlg.m_fScore3);m_List.AddString(str);m_List.AddString("姓名m_List.AddString("學(xué)號m_List.AddString("性別CStringstr;"+dlg.m_strName);"+dlg.m_strNo

22、);"+strSex);修改了接下來這三條語句m_List.AddString("所學(xué)專業(yè):"+dlg.m_strSpecial);®在Ex_CtrlsDlg.cpp文件的前面添加CStulnfoDIg類的頭文件包含:#include"CourseDIg.h"#include"InputDIg.h"/在“工程”一“設(shè)置”常規(guī)選項里,選擇使用MFC作為靜態(tài)鏈接庫編譯運(yùn)行并測試。結(jié)果如圖3.3所示。圖3.3學(xué)生基本信息添加后的結(jié)果4. 改變對話框背景顏色5. 改變對話框背景顏色將項目工作區(qū)窗口切換到ResourceVi

23、ew頁面,打開IDD_EX_CTRLS_DIALOG對話框資源。打開對話框網(wǎng)格,參看圖3.2的控件布局,為對話框添加如表3.3所示的一些控件。表3.3添加的控件用MFCClassWizard為表3.4控件添加成員變量。添加的控件ID號標(biāo)題其他屬性垂直滾動條IDC_SCROLLBAR_RED默認(rèn)滑動條(綠色)IDC_SLIDER_GREEN方位為Vertical,其他默認(rèn)滑動條(藍(lán)色)IDCSLIDERBLUE方位為Vertical,其他默認(rèn)表3.4控件變量控件ID號變量類別變量類型變量名范圍和大小IDC_SCROLLBAR_REDControlCScrollBarm_scrollRedIDC_

24、SLIDER_GREENControlCSliderCtrlm_sliderGreenIDC_SLIDER_GREENValueintm_nGreenIDC_SLIDER_BLUEControlCSliderCtrlm_sliderBlueIDCSLIDERBLUEValueintmnBlue為CEx_CtrlsDlg類添加兩個成員變量,一個是int型m_nRed,用來設(shè)置顏色R、G、B中的紅色分量,另一個是畫刷CBrush類對象m_Brush,用來設(shè)置對話框背景所需要的畫刷。方法:在Ex_CtrlsDlg.h頭文件內(nèi)找到相應(yīng)位置按下圖添加。DialogData/«AFX_DATA(

25、CAaDlg)enumIDDCScrollBarCSliderCtrlCSliderCtrlCLietBoxintintintCBrushIDD_AA_DIALOGm_scrollRed;msliderGreenmsliderBlue;n_List;m_nBlue;mnGreen;mnRed;nBrush;函數(shù)中添加下列代碼: 在CEx_CtrlsDlg:OnlnitDialogBOOLCEx_CtrlsDlg:OnlnitDialog()m_scrollRed.SetScrollRange(0,255);m_sliderBlue.SetRange(O,255);m_sliderGreen.S

26、etRange(0,255);/設(shè)置顏色調(diào)節(jié)范圍m_nBlue=m_nGreen=m_nRed=192;初始化對話框背景顏色UpdateData(FALSE);m_scrollRed.SetScrollPos(m_nRed);returnTRUE;/returnTRUEunlessyousetthefocustoacontrol代碼: 用MFCClassWizard為CEx_CtrlsDlg類映射WM_VSCROLL消息,并添加下列voidCEx_CtrlsDlg:OnVScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)intnID=pScro

27、llBar->GetDlgCtrllD();if(nID=IDC_SCROLLBAR_RED)switch(nSBCode)caseSBLINEUP:intnID=pScrollBar->GetDlgCtrllD();if(nID=IDC_SCROLLBAR_RED)switch(nSBCode)caseSBLINEUP:/獲取對話框中控件ID號或是滾動條產(chǎn)生的水平滾動消息m_nRed-;break;m_nRed+;break;m_nRed-=10;break;caseSB_PAGEDOWN:m_nRed+=10;break;caseSB_THUMBTRACK:m_nRed=nPo

28、s;break;caseSBLINEDOWN:caseSBPAGEUP:單擊滾動條向上箭頭/單擊滾動條向下箭頭if(m_nRed<0)m_nRed=0;if(m_nRed>255)m_nRed=255;m_scrollRed.SetScrollPos(m_nRed);/使對話框無效,強(qiáng)迫系統(tǒng)重繪對話框Invalidate();CDialog:OnVScroll(nSBCode,nPos,pScrollBar); 用MFCClassWizard為CEx_CtrlsDlg類映射WM_CTLCOLOR消息,并添加下列代碼:HBRUSHCEx_CtrlsDlg:OnCtlColor(CDC

29、*pDC,CWnd*pWnd,UINTnCtlColor)/HBRUSHhbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);UpdateData(TRUE);/使畫刷和對象分離/創(chuàng)建顏色畫刷/設(shè)置背景顏色/返回畫刷句柄,以便系統(tǒng)使此畫刷繪制對話框COLORREFcolor=RGB(mnRed,mnGreen,mnBlue);m_Brush.Detach();m_Brush.CreateSolidBrush(color);pDC->SetBkColor(color);return(HBRUSH)m_Brush; 編譯運(yùn)行并測試。5. 寫出實驗報告分析上述運(yùn)

30、行結(jié)果以及思考與練習(xí),寫出實驗報告。思考與練習(xí)(1) 若將控制綠色和藍(lán)色顏色分量的滑動條全部換成滾動條,則代碼應(yīng)如何修改?(2) 若將CEx_CtrlsDlg對話框中的列表框換成靜態(tài)文本,并用于顯示信息,則應(yīng)如何實現(xiàn)?實驗十二菜單、工具欄和狀態(tài)欄實驗?zāi)康暮蛢?nèi)容(1)創(chuàng)建一個單文檔應(yīng)用程序Ex_SDI。在“查看”菜單下添加一個子菜單“鼠標(biāo)位置”,ID為ID_VIEW_MOUSE,當(dāng)選擇該菜單命令后,鼠標(biāo)當(dāng)前的位置顯示到狀態(tài)欄上,同時該菜單項呈選中狀態(tài)。再次選擇該菜單命令,狀態(tài)欄不再顯示當(dāng)前鼠標(biāo)位置,同時該菜單項的選中狀態(tài)被去除。(2) 在工具欄上添加并設(shè)計一個工具按鈕圖標(biāo),使該按鈕和ID_VIE

31、W_MOUSE菜單命令聯(lián)動,并添加一個快捷鍵Ctrl+M和該菜單命令聯(lián)動。(3) 在窗口客戶區(qū)中右擊鼠標(biāo),彈出快捷菜單,顯示主菜單“查看”中的菜單命令。結(jié)果如圖5.1所示。所示。圖5.1Ex_SDI運(yùn)行結(jié)果實驗準(zhǔn)備和說明(1)具備知識:菜單、工具條和狀態(tài)欄。(2)創(chuàng)建本次實驗工作文件夾“VisualC+程序?qū)嶒瀸嶒?”。實驗內(nèi)容和步驟1. 啟動VisualC+6.0打開計算機(jī),啟動VisualC+6.0系統(tǒng)。2. 用MFCAppWizard(exe)創(chuàng)建一個默認(rèn)的單文檔應(yīng)用程序Ex_SDI 選擇“文件”7“新建”菜單,在彈出的“新建”對話框中選擇“工程”標(biāo)簽,在應(yīng)用程序項目類型列表框中選擇MF

32、CAppWizard(exe)的項目類型,將工程文件夾定位到"'VisualC+程序?qū)嶒瀸嶒?”,并在工程框中輸入項目名Ex_SDI。 單擊"確定”按鈕,從出現(xiàn)的對話框中,選擇單個文檔(SingleDocument,SDI)應(yīng)用程序類型。 保留其他的默認(rèn)選項,單擊“完成”按鈕出現(xiàn)一個對話框,顯示出用戶在步驟中作出的選擇,單擊“確定”按鈕,系統(tǒng)開始創(chuàng)建。3.添加菜單 在項目工作區(qū)窗口中選擇ResourceView頁面,雙擊資源Menu項中的IDR_MAINFRAME,則菜單編輯器窗口出現(xiàn)在主界面的右邊,相應(yīng)的Ex_SDI項目的菜單資源被顯示出來。 單擊“查看”菜單,則

33、在該菜單的最后一項,VisualC+為用戶留出了一個空位置,用來輸入新的菜單項。 在菜單的空位置上雙擊鼠標(biāo)左鍵,則出現(xiàn)它的屬性對話框,如圖5.2所示,在標(biāo)題框中輸入“鼠標(biāo)位置(&M)tCtrl+1”,在ID框輸入該菜單項的資源標(biāo)識:ID_VIEW_MOUSE,在提示框中輸入“在狀態(tài)欄上顯示當(dāng)前鼠標(biāo)位置n鼠標(biāo)位置”,其中n前一部分的文本是顯示在狀態(tài)欄上的,后一部分是聯(lián)動的工具圖標(biāo)按鈕的提示文本。0蚩General|ExtendedSlylEi;|D:lD_VIEW_WOUSE二空標(biāo)題:廠鳥廿隔符I-Q弾岀I-N非徼活廠雖選中的廠匹孌灰廠L幫助|亂標(biāo)位置EMIltCIrl+lP暫停:Non

34、e圖5.2菜單項屬性設(shè)置4.添加并設(shè)計一個工具圖標(biāo)按鈕 在項目工作區(qū)窗口的ResourceView頁面中,雙擊Toolbar中的IDR_MAINFRAME,打開工具欄資源。 單擊工具欄最右端的空白按鈕,在資源編輯器的按鈕設(shè)計窗口中繪制一個“箭頭”,顏色為黑色,然后將其拖動到“幫助”按鈕的前面,并使該按鈕的前后均有半個空格,結(jié)果如圖5.3所示。 雙擊剛才設(shè)計的工具按鈕,在彈出的屬性對話框中將其ID設(shè)為口陽|0JU馴創(chuàng)創(chuàng)血匸1|PL圖5.3設(shè)計的工具按鈕ID_VIEW_MOUSE。5.菜單命令和工具按鈕的更新為CMainFrame類添加一個BOOL型的成員變量m_blsMouse,在CMainFr

35、ame類構(gòu)造函數(shù)中將m_blsMouse的初值設(shè)為FALSE。方法:找到MainFrm.h頭文件,在下圖位置添加相應(yīng)代碼。在MainFrm.cpp相應(yīng)位置設(shè)初值。protected:/controlbarembeddedmembersCIoolBarCStatusBarboolm_wndToolBar;m_undStatusBar;mbisHouse:CMainFiame:CMainFrani?()<n_bIsMoiise=false;用MFCClassWizard在CMainFrame類中添加工具按鈕ID_VIEW_MOUSE的COMMAND和UPDATE_COMMAND_UI消息映射

36、函數(shù),并添加下列代碼:voidCMainFrame:OnViewMouse()m_blsMouse=!m_blsMouse;voidCMainFrame:OnUpdateViewMouse(CCmdUI*pCmdUI)pCmdUI->SetCheck(m_blsMouse);編譯運(yùn)行并測試。6. 設(shè)置快捷鍵 在項目工作區(qū)窗口的ResourceView頁面中,雙擊Accelerator中的IDR_MAINFRAME,打開快捷鍵資源。 雙擊加速鍵列表的最下端的空行,彈出如圖5.4所示的AccelProperities對話框,選擇菜單項ID_VIEW_MOUSE作為要聯(lián)動的快捷鍵的ID號,然后

37、單擊“下一鍵”按鈕,并按下Ctrl+1作為此加速鍵的鍵值。圖5.4設(shè)置快捷鍵 編譯運(yùn)行并測試。7. 添加狀態(tài)欄窗格并顯示鼠標(biāo)當(dāng)前位置 打開MainFrm.cpp文件,將原先的indicators數(shù)組修改如下:staticUINTindicators=/statuslineindicator/statuslineindicatorID_SEPARATOR,ID_SEPARATOR,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,; 用MFCClassWizard在CEx_SDIView類中映射WM_MOUSEMOVE(移動鼠標(biāo))消息,并在

38、映射函數(shù)中添加下列代碼:voidCEx_SDIView:OnMouseMove(UINTnFlags,CPointpoint)CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;/獲得主窗口指針CStatusBar*pStatus=&pFrame->m_wndStatusBar;/獲得主窗口中的狀態(tài)欄指針CStringstr;if(pFrame->m_blsMouse)str.Format("%d,%d",point.x,point.y);/格式化文本elsestr.Empty();/為空字

39、符if(pStatus)pStatus->SetPaneText(1,str);/更新第二個窗格的文本CView:OnMouseMove(nFlags,point); 將MainFrm.h文件中的受保護(hù)變量m_wndStatusBar變成公共變量。public:uirtualCMainFrame();CStatuBarmwndStatusBar:boolmblsMouse;方法:修改MainFrm.h文件中相應(yīng)位置代碼,如下圖。protected:/controlbar*embeddedmembersCToolBarm_wndToolBar;/Generatednessagemapfun

40、ctions 在Ex_SDIView.cpp文件的開始處增加下列語句:#include"Ex_SDIView.h"#include"MainFrm.h" 編譯運(yùn)行并測試。8. 實現(xiàn)快捷菜單 用MFCClassWizard在CMainFrame類添加WM_CONTEXTMENU消息映射,并在映射函數(shù)添加下列代碼:voidCMainFrame:OnContextMenu(CWnd*pWnd,CPointpoint)CMenu*pSysMenu=GetMenu();/獲得程序菜單指針pSysMenu->GetSubMenu(2)->TrackPop

41、upMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this); 編譯運(yùn)行并測試。9. 寫出實驗報告分析上述運(yùn)行結(jié)果以及思考與練習(xí),寫出實驗報告。思考與練習(xí)若狀態(tài)欄只有一個用戶定義的指示器窗格(其ID號為ID_TEXT_PANE),應(yīng)如何定義?若當(dāng)用戶在客戶區(qū)雙擊鼠標(biāo)時,在該窗格中顯示"雙擊鼠標(biāo)”字樣,則應(yīng)如何編程?voidCAaDlg:OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)intnID=pScrollBar->GetDlgCtrllD();/獲取對話框中控件ID號if(nID=IDC_SCRO

溫馨提示

  • 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

提交評論