




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生实验报告开课实验室: 2011年6月25日学院年级、专业、班姓名学号实验课程名称面向对象程序设计实验成绩实验项目名称使用MFC进行可视化编程指导老师一、 实验目的及要求:了解MFC类的层次结构及主要类的用法,掌握使用MFC和向导来编写Windows应用程序。控件是Windows图形用户界面的主要组成部分之一,用户通过操作控件对象完成与应用程序之间的交互。本实验要求通过对控件相关知识的学习,目的是要掌握静态控件、按钮、流动条、编辑框、列表框、组合框和对话框的创建、消息发送和控件控制等内容。要求:(1)掌握MFC类的层次结构及主要类的用法。(2)使用应用程序向导创建MFC类的Windows应用程序。(3)使用静态控件、按钮、流动条、编辑框、列表框、组合框和对话框等创建应用程序。二、实验设备计算机:PC系统软件平台:Windows XP操作系统,Visual C+ 6.0集成开发系统。三、实验原理 利用Visual C+ 6.0开发环境,对实验所要求的程序设计项目,编辑C语言源程序并形成 .cpp 源代码文件,再编译.cpp 文件形成 .boj 目标代码文件,经过.boj文件与系统标准代码的连接形成 .exe 可执行代码文件,运行.exe文件以得到实验所期望的结果。四、实验步骤 1. 打开PC机并启动Windows XP操作系统(利用实验设备)2. 开启Visual C+ 6.0集成开发系统(形成软件开发环境)3. 程序设计(按要求可先设计算法并给出流程图)4. 编辑(生成 .cpp源程序文件)5. 编译(调试并生成 .boj 目标文件)6. 连接(调试并生成 .exe 可执行文件)7. 运行(调试并得到预期的程序执行结果)8. 按实验要求分析实验结果五、实验过程及原始纪录(数据,图表,计算等)六、实验结果及分析8.1_1:用MFC的向导创建编辑框,在编辑框中实现算术“加”、“减”、“乘”及“除”的运算,界面如图13-1所示。图13-1 具有“加”、“减”、“乘”及“除”运算功能的界面实验步骤:1、利用MFC向导建立程序框架,在MFC AppWizard Step1中选择Dialog based。其余都采用默认选项。这样建立了一个基于对话框的程序。2、利用资源编辑器,建立对话框:在Resource View 选项卡中打开Dialog资源组,由于程序的文件名为editor, 因此,系统自动产生一个名为IDD_editor_DIALOG的资源文件,在ResourceView资源组框中双击IDD_editor_DIALOG,如图13-2所示。然后在右边的窗口中显示出待编辑的对话框。根据如图13-1所示的样式建立对话框。图13-2 ResourceView资源组框下面以“数据1”编辑框和“加”按钮为例介绍控件的创建过程,其余的编辑框和按钮可参照此操作:(1) 在控件工具栏中选择“编辑框”,在控件工具上单击鼠标左键,在如图13-1所示的对话框编辑窗口上“数据1”编辑框的位置上,画出一个大小合适的编辑框。然后在对话框上单击鼠标右键,对该编辑框上的Properties属性进行设置,如图13-3所示,设置对话框的ID属性。图13-3 Edit Properties对话框(2) 在图13-1的“加”按钮的位置上,画出一个大小合适的下压式按钮。设置该按钮的Properties选项,如图13-4所示,设置该控件的ID值和Caption属性。图13-4 按钮“加”的属性设置按照上面的操作过程编辑各按钮或编辑框等对象的属性。见表13-1所示。表13-1 对象属性表对象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)给编辑框连接变量:在任何一个编辑框上单击鼠标右键,设置ClassWizard菜单项,弹出MFC Class Wizard对话框,选择Member Variables 选项卡。然后在Control IDs 列表框中,选中IDC_ITEM1_EDIT,单击Add Variable按钮,在弹出的对话框中连接变量m_Item1_Edit.,结果如图13-5所示。按照上面的操作过程给另两个编辑框加入变量见表13-2所示。图13-5 MFC Wizard中的Member Variables选项卡表13-2 三个编辑框变量表ID变量变量类型ID_ITEM1_EDITm_Item1_EditCEditID_ITEM2_EDITm_Item1_EditCEditID_ITEM3_EDITm_Item1_EditCstring2)给四个按钮连接代码: 在“加”按钮上单击鼠标右键,选择ClassWizard,在弹出的对话框中选择Message Maps选项卡,在Object IDs列表框中选择IDC_ADD_BUTTON,在Messages列表框中选择BN_CLICKED选项,即选择单击按钮事件。单击右边的Add Function按钮,在弹出的对话框中接受默认的名字,执行结果如图13-6所示。单击Edit Code 按钮,此时显示源代码文件,在函数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)同样的可以给“减”、“乘”、“除”按钮连接代码,不同的是消息映射函数中执行减、乘及除的操作。减的操作代码如下: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加到函数OnExitButton( )中,例如下列代码:void CEditorDlg:OnExitButton() OnOK();3、建立并运行程序运行后该编辑框能实现“加”、“减”、“乘”及“除”的运算。如图13-7所示。图13-7 实现“加”、“减”、“乘”及“除”的运算#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等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社群优惠福利活动方案
- 禁毒高校活动方案
- 电厂节能活动方案
- 电影班会活动方案
- 童鞋春季活动方案
- 端午编织活动方案
- 组织小区跑步活动方案
- 社工育儿活动方案
- 水泥生产配料培训
- 磁砖开业活动方案
- 2022年混凝土预制U型槽单元工程质量评定表
- 新视野大学英语读写教程Unit1教案(含和译文)
- 机电一体化设计
- 新教材教科版五年级上册科学 第二单元 地球表面的变化 单元全套课时练
- (中职中专)财经法规与会计职业道德课件完整版电子教案
- 宝钢集团生产安全事故案例汇编
- DB37T 5151-2019 园林绿化工程资料管理规程
- Q∕GDW 11612.43-2018 低压电力线高速载波通信互联互通技术规范 第4-3部分:应用层通信协议
- 贝多芬F大调浪漫曲—小提琴谱(带钢伴谱)
- 压力传感器(课堂PPT)
- (施工方案)场地三通一平施工方案
评论
0/150
提交评论