




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
學(xué)生實(shí)驗(yàn)報(bào)告開課實(shí)驗(yàn)室: 2011年6月25日學(xué)院年級(jí)、專業(yè)、班姓名學(xué)號(hào)實(shí)驗(yàn)課程名稱面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)成績實(shí)驗(yàn)項(xiàng)目名稱使用MFC進(jìn)行可視化編程指導(dǎo)老師一、 實(shí)驗(yàn)?zāi)康募耙螅毫私釳FC類的層次結(jié)構(gòu)及主要類的用法,掌握使用MFC和向?qū)砭帉慦indows應(yīng)用程序??丶荳indows圖形用戶界面的主要組成部分之一,用戶通過操作控件對(duì)象完成與應(yīng)用程序之間的交互。本實(shí)驗(yàn)要求通過對(duì)控件相關(guān)知識(shí)的學(xué)習(xí),目的是要掌握靜態(tài)控件、按鈕、流動(dòng)條、編輯框、列表框、組合框和對(duì)話框的創(chuàng)建、消息發(fā)送和控件控制等內(nèi)容。要求:(1)掌握MFC類的層次結(jié)構(gòu)及主要類的用法。(2)使用應(yīng)用程序向?qū)?chuàng)建MFC類的Windows應(yīng)用程序。(3)使用靜態(tài)控件、按鈕、流動(dòng)條、編輯框、列表框、組合框和對(duì)話框等創(chuàng)建應(yīng)用程序。二、實(shí)驗(yàn)設(shè)備計(jì)算機(jī):PC系統(tǒng)軟件平臺(tái):Windows XP操作系統(tǒng),Visual C+ 6.0集成開發(fā)系統(tǒng)。三、實(shí)驗(yàn)原理 利用Visual C+ 6.0開發(fā)環(huán)境,對(duì)實(shí)驗(yàn)所要求的程序設(shè)計(jì)項(xiàng)目,編輯C語言源程序并形成 .cpp 源代碼文件,再編譯.cpp 文件形成 .boj 目標(biāo)代碼文件,經(jīng)過.boj文件與系統(tǒng)標(biāo)準(zhǔn)代碼的連接形成 .exe 可執(zhí)行代碼文件,運(yùn)行.exe文件以得到實(shí)驗(yàn)所期望的結(jié)果。四、實(shí)驗(yàn)步驟 1. 打開PC機(jī)并啟動(dòng)Windows XP操作系統(tǒng)(利用實(shí)驗(yàn)設(shè)備)2. 開啟Visual C+ 6.0集成開發(fā)系統(tǒng)(形成軟件開發(fā)環(huán)境)3. 程序設(shè)計(jì)(按要求可先設(shè)計(jì)算法并給出流程圖)4. 編輯(生成 .cpp源程序文件)5. 編譯(調(diào)試并生成 .boj 目標(biāo)文件)6. 連接(調(diào)試并生成 .exe 可執(zhí)行文件)7. 運(yùn)行(調(diào)試并得到預(yù)期的程序執(zhí)行結(jié)果)8. 按實(shí)驗(yàn)要求分析實(shí)驗(yàn)結(jié)果五、實(shí)驗(yàn)過程及原始紀(jì)錄(數(shù)據(jù),圖表,計(jì)算等)六、實(shí)驗(yàn)結(jié)果及分析8.1_1:用MFC的向?qū)?chuàng)建編輯框,在編輯框中實(shí)現(xiàn)算術(shù)“加”、“減”、“乘”及“除”的運(yùn)算,界面如圖13-1所示。圖13-1 具有“加”、“減”、“乘”及“除”運(yùn)算功能的界面實(shí)驗(yàn)步驟:1、利用MFC向?qū)Ы⒊绦蚩蚣?,在MFC AppWizard Step1中選擇Dialog based。其余都采用默認(rèn)選項(xiàng)。這樣建立了一個(gè)基于對(duì)話框的程序。2、利用資源編輯器,建立對(duì)話框:在Resource View 選項(xiàng)卡中打開Dialog資源組,由于程序的文件名為editor, 因此,系統(tǒng)自動(dòng)產(chǎn)生一個(gè)名為IDD_editor_DIALOG的資源文件,在ResourceView資源組框中雙擊IDD_editor_DIALOG,如圖13-2所示。然后在右邊的窗口中顯示出待編輯的對(duì)話框。根據(jù)如圖13-1所示的樣式建立對(duì)話框。圖13-2 ResourceView資源組框下面以“數(shù)據(jù)1”編輯框和“加”按鈕為例介紹控件的創(chuàng)建過程,其余的編輯框和按鈕可參照此操作:(1) 在控件工具欄中選擇“編輯框”,在控件工具上單擊鼠標(biāo)左鍵,在如圖13-1所示的對(duì)話框編輯窗口上“數(shù)據(jù)1”編輯框的位置上,畫出一個(gè)大小合適的編輯框。然后在對(duì)話框上單擊鼠標(biāo)右鍵,對(duì)該編輯框上的Properties屬性進(jìn)行設(shè)置,如圖13-3所示,設(shè)置對(duì)話框的ID屬性。圖13-3 Edit Properties對(duì)話框(2) 在圖13-1的“加”按鈕的位置上,畫出一個(gè)大小合適的下壓式按鈕。設(shè)置該按鈕的Properties選項(xiàng),如圖13-4所示,設(shè)置該控件的ID值和Caption屬性。圖13-4 按鈕“加”的屬性設(shè)置按照上面的操作過程編輯各按鈕或編輯框等對(duì)象的屬性。見表13-1所示。表13-1 對(duì)象屬性表對(duì)象IDCaption編輯框IDC_ITEM1_EDIT編輯框IDC_ITEM1_EDIT編輯框IDC_RESULT _EDIT按鈕IDC_ADD_BUTTONAdd按鈕IDC_DIFFERENCE_BUTTONDifference按鈕IDC_MULTIPLY_BUTTONMultiply按鈕IDC_DEVIDE_BUTTONDevide按鈕IDC_EXIT_BUTTONExit(3) 添加代碼1)給編輯框連接變量:在任何一個(gè)編輯框上單擊鼠標(biāo)右鍵,設(shè)置ClassWizard菜單項(xiàng),彈出MFC Class Wizard對(duì)話框,選擇Member Variables 選項(xiàng)卡。然后在Control IDs 列表框中,選中IDC_ITEM1_EDIT,單擊Add Variable按鈕,在彈出的對(duì)話框中連接變量m_Item1_Edit.,結(jié)果如圖13-5所示。按照上面的操作過程給另兩個(gè)編輯框加入變量見表13-2所示。圖13-5 MFC Wizard中的Member Variables選項(xiàng)卡表13-2 三個(gè)編輯框變量表ID變量變量類型ID_ITEM1_EDITm_Item1_EditCEditID_ITEM2_EDITm_Item1_EditCEditID_ITEM3_EDITm_Item1_EditCstring2)給四個(gè)按鈕連接代碼: 在“加”按鈕上單擊鼠標(biāo)右鍵,選擇ClassWizard,在彈出的對(duì)話框中選擇Message Maps選項(xiàng)卡,在Object IDs列表框中選擇IDC_ADD_BUTTON,在Messages列表框中選擇BN_CLICKED選項(xiàng),即選擇單擊按鈕事件。單擊右邊的Add Function按鈕,在彈出的對(duì)話框中接受默認(rèn)的名字,執(zhí)行結(jié)果如圖13-6所示。單擊Edit Code 按鈕,此時(shí)顯示源代碼文件,在函數(shù)OnAddButton()中輸入下列代碼:圖13-6 為按鈕連接代碼void CEditorDlg:OnAddButton() char cstrItem110,cstrItem210;double dfItem1,dfItem2,dfResult;char cBuffer10;m_Item1_Edit.GetWindowText(cstrItem1,10);m_Item2_Edit.GetWindowText(cstrItem2,10);dfItem1=atof(LPCSTR)cstrItem1);dfItem2=atof(LPCSTR)cstrItem2);dfResult=dfItem1+dfItem2;_gcvt (dfResult,10,cBuffer);m_sResult_Edit=(LPCSTR)cBuffer;UpdateData(FALSE);3)同樣的可以給“減”、“乘”、“除”按鈕連接代碼,不同的是消息映射函數(shù)中執(zhí)行減、乘及除的操作。減的操作代碼如下:void CEditorDlg:OnDifferenceButton() char cstrItem110,cstrItem210;double dfItem1,dfItem2,dfResult;char cBuffer10;m_Item1_Edit.GetWindowText(cstrItem1,10);m_Item2_Edit.GetWindowText(cstrItem2,10);dfItem1=atof(LPCSTR)cstrItem1);dfItem2=atof(LPCSTR)cstrItem2);dfResult=dfItem1-dfItem2;_gcvt(dfResult,10,cBuffer);m_sResult_Edit=(LPCSTR)cBuffer;UpdateData(FALSE);乘的操作代碼如下:void CEditorDlg:OnMultiplyButton() char cstrItem110,cstrItem210;double dfItem1,dfItem2,dfResult;char cBuffer10;m_Item1_Edit.GetWindowText(cstrItem1,10);m_Item2_Edit.GetWindowText(cstrItem2,10);dfItem1=atof(LPCSTR)cstrItem1);dfItem2=atof(LPCSTR)cstrItem2);dfResult=dfItem1*dfItem2;_gcvt(dfResult,10,cBuffer);m_sResult_Edit=(LPCSTR)cBuffer;UpdateData(FALSE);除的操作代碼如下:void CEditorDlg:OnDevideButton() char cstrItem110,cstrItem210;double dfItem1,dfItem2,dfResult;char cBuffer10;m_Item1_Edit.GetWindowText(cstrItem1,10);m_Item2_Edit.GetWindowText(cstrItem2,10);dfItem1=atof(LPCSTR)cstrItem1);dfItem2=atof(LPCSTR)cstrItem2);dfResult=dfItem1/dfItem2;_gcvt(dfResult,10,cBuffer);m_sResult_Edit=(LPCSTR)cBuffer;UpdateData(FALSE);4)給“退出“按鈕連接代碼,利用ClassWizard將按鈕消息BN_CLICKED加到函數(shù)OnExitButton( )中,例如下列代碼:void CEditorDlg:OnExitButton() OnOK();3、建立并運(yùn)行程序運(yùn)行后該編輯框能實(shí)現(xiàn)“加”、“減”、“乘”及“除”的運(yùn)算。如圖13-7所示。圖13-7 實(shí)現(xiàn)“加”、“減”、“乘”及“除”的運(yùn)算#include stdafx.h#include 加減乘除.h#include 加減乘除Dlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg dialogCMyDlg:CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg:IDD, pParent)/AFX_DATA_INIT(CMyDlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMyDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, IDC_EDIT3, m_Data3_Edit3);DDX_Control(pDX, IDC_EDIT2, m_Data2_Edit2);DDX_Control(pDX, IDC_EDIT1, m_Data1_Edit1);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyDlg, CDialog)/AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_Exit_BUTTON3, OnExitBUTTON3)ON_BN_CLICKED(IDC_Plus_BUTTON1, OnPlusBUTTON1)ON_BN_CLICKED(IDC_Cut_BUTTON2, OnCutBUTTON2)ON_BN_CLICKED(IDC_Multiply_BUTTON4, OnMultiplyBUTTON4)ON_BN_CLICKED(IDC_Except_BUTTON5, OnExceptBUTTON5)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg message handlersBOOL CMyDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CMyDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CMyDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CMyDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMyDlg:OnExitBUTTON3() OnOK();/ TODO: Add your control notification handler code herevoid CMyDlg:OnPlusBUTTON1() double sum=0;char Result10;m_Data1_Edit1.GetWindowText(Result,10);sum+=atof(Result);m_Data2_Edit2.GetWindowText(Result,10); sum+=atof(Result); sprintf(Result,%.3f,sum); m_Data3_Edit3.SetWindowText(Result);/ TODO: Add your control notification handler code herevoid CMyDlg:OnCutBUTTON2() double mission=0;char Result10;m_Data1_Edit1.GetWindow
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 涂料干燥后硬度檢測方法
- 南京財(cái)經(jīng)大學(xué)《貴金屬及鑒別》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年霞浦縣小升初數(shù)學(xué)綜合練習(xí)卷含解析
- 于都縣2025屆三下數(shù)學(xué)期末質(zhì)量檢測模擬試題含解析
- 南陽職業(yè)學(xué)院《環(huán)境物理化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年國網(wǎng)甘肅省電力公司高校畢業(yè)生招聘(約580人)(第一批)筆試參考題庫附帶答案詳解
- 2025屆河北省邢臺(tái)市平鄉(xiāng)縣艾村小學(xué)小升初數(shù)學(xué)自主招生備考卷含解析
- 長春市2024-2025學(xué)年數(shù)學(xué)四下期末調(diào)研模擬試題含解析
- 2025年國網(wǎng)內(nèi)蒙古東部電力有限公司提前批校園招聘工作啟動(dòng)筆試參考題庫附帶答案詳解
- 肺心病護(hù)理措施
- 02 第2章 城市與城市化-城市管理學(xué)
- 六年級(jí)上冊(cè)英語教案-Culture 2 Going Green 第二課時(shí) 廣東開心英語
- 警察叔叔是怎樣破案的演示文稿課件
- 2019石景山初三一模語文試題及答案
- 外固定架課件
- 尿液有形成分形態(tài)學(xué)檢查與臨床意義課件
- 保密風(fēng)險(xiǎn)評(píng)估報(bào)告
- 09式 新擒敵拳 教學(xué)教案 教學(xué)法 圖解
- CAD術(shù)語對(duì)照表
- 《橋梁工程計(jì)算書》word版
- 學(xué)術(shù)論文的寫作與規(guī)范課件
評(píng)論
0/150
提交評(píng)論