当前位置:文档之家› (4)综合性实验报告

(4)综合性实验报告

MFC基本应用程序的建立学院:计算机与信息工程学院专业:通信工程班级:12级通信一班学号:1208224030姓名:孙航计算机与信息技术学院综合性、设计性实验报告1.理解Windows编程特点,比较命令控制台项目与Windows编程的异同。

2.了解MFC应用程序的消息映射,数据映射,运行时类型检查和诊断信息转储机制。

3.掌握用AppWizard(exe)创建SDI,MDI以及基于对话框的应用程序的方法。

4.了解SDI和MDI编程,功能等方面的异同。

5.掌握使用项目工作区窗口的Class View 页面的为一个类添加成员的方法。

6.掌握用Class Wizard映射消息的方法等。

二、实验仪器或设备:三、总体设计(设计原理、设计方案及流程等)原理:MFC应用程序的建立主要流程:1、创建单文档2、添加成员3、添加消息映射4、调试四、实验步骤(包括主要步骤、代码分析等)实验内容:(1)在一个默认的单文档应用程序Ex_ SDI中通过映射计时器消息实现这样的功能:无论在应用程序的窗口客户区中单击鼠标左键或右键,都会弹出“消息”对话框,显示鼠标左键或右键的单击次数。

Ex_ SDI运行结果如图所示。

(2)使用调试器对上诉程序的流程和鼠标单击次数进行调试。

实验步骤:1.创建工作文件夹打开计算机,在“F:\我的C++”文件夹中创建一个新的子文件夹“实验4”。

2.创建单文档应用程序Ex_SDI创建单文档应用程序Ex_SDI的具体步骤如下:(1)启动Visual C++ 6.0。

(2)选择“文件”→“新建”菜单命令,显示出“新建”对话框。

从列表中选中MFCAppWizard(exe)的项目类型项。

(3)在“工程”编辑框中输入应用程序项目名称Ex_SDI,并将项目文件夹定位到“F:\我的C++\实验4”。

(4)选中单文档(Single Document,按简称SDI)应用程序类型。

单击“完成”按钮。

(5)系统将显示向导创建信息,单击“确定”按钮将自动创建此应用程序。

(6)编译、运行程序。

3. 添加数据成员添加数据成员的具体步骤如下。

(1)展开项目工作区窗口ClassView中的所有类结点。

(2)用鼠标右键单击CEx_SDIView类结点,从弹出的快捷菜单中选择“Add Member Variable”(添加成员变量),弹出如图所示的“Add Member Variable”对话框,如下图所示:(3)在“变量类型”(Variarble Typ)框中输入成员变量类型int,在“变量名称”(Variable Name)框中输入成员变量名m_nLButton。

保留默认的访问方式(Access)为Public。

单击“确定”按钮,这样,就会在CEx_SDIView中添加一个公有型成员变量m_nLButton,变量类型为int。

(4)按相同的方法,在CEx_SDIView中添加一个公有型成员变量m_nRButton,变量类型为int。

(5)在项目工作区窗口Class View中,展开CEx_SDIView类结点的所有成员结点,双击构造函数结点,在CEx_View类的构造函数中添加下列成员变量初始化代码:CEx_SDIView::CEx_SDIView(){m_nLButton=m_nRButton=0;}4.添加消息映射(1)按【Ctrl+W】快捷键打开“MFC ClassWizard”对话框。

(2)在Class name 组合框中,将类名选定为CEx_SDIView。

此时,Object IDs 和Message列表内容会相应地改变。

在Object IDs列表框中选定CEx_SDIView,而在Message列表中选定WM_LBUTTONMDOWN消息。

(3)双击Messages列表中的WM_LBUTTONMDOWN消息活单击“Add Function”按钮,都会在CEx_SDIview类中添加该消息的映射函数OnLBottonDown,同时在Member function列表中显示这一消息映射函数和被映射的消息。

映射WM_LBUTTOMDOWN消息的结果如图所示。

(4)单击“Edit Code”按钮后,ClassWizard对话框退出,并转向文档窗口,定位到OnLButtonDown函数源代码处,添加下列代码:void CEx_SDIView::OnLButtonDown(UINT nFlags, CPoint point){//计数变量m_nLButton加1,然后启动计时器m_nLButton++;SetTimer(1,50,NULL);CView::OnLButtonDown(nFlags, point);}(5)按相同的方法为CEx_SDIView类添加WM——RBUTTOMDOWN消息映射,并在映射函数中添加下列代码:void CEx_SDIView::OnRButtonDown(UINT nFlags, CPoint point){//计数变量m_nRButton加1,然后启动计时器m_nRButton++;SetTimer(2,50,NULL);CView::OnRButtonDown(nFlags, point);}(6)按类似的方法为CEx_SDIView类添加WM_TIMER消息映射。

(7)并在映射函数中添加下列代码:void CEx_SDIView::OnTimer(UINT nIDEvent){CString str; //创建一个字符串类对象//通过判断nIDEvent的值来确定鼠标是左击还是右击if(nIDEvent==1)str.Format("你已单击鼠标左键%d次!",m_nLButton);if(nIDEvent==2)str.Format("你已单击鼠标右键%d次!",m_nLButton);if((nIDEvent==1)||(nIDEvent==2)){KillTimer(nIDEvent); //先要关闭计时器MessageBox(str,"报告");}CView::OnTimer(nIDEvent);}(8)编译运行并测试,结果如下图所示:5.设置断点在设置断点之前,首先要保证程序中没有语法错误。

所谓断点,实际上是告诉调试器在何处暂时中断程序的运行,以便查看程序的状态以及浏览和修改变量的值等。

(1)在项目工作区的Class View页面中,展开CEx_SDIView下的所有结点。

(2)双击OnLButtonDown结点,会在文档窗口中打开并定位到该信息映射代码处,在代码行“m_nLButtonDown++;”中单击鼠标。

(3)用下列3种方式之一设置断点,会在代码行“m_nLButton++;”的最前面的窗口页边距上有一个深红色的实心圆块,如图所示:●按快捷键【F9】。

●在编译(Build)微型条工具栏上单击“手形”按钮。

●定位到文档窗口中的代码行,在需要设置(或清除)断点的位置右击鼠标,在弹出的快捷菜单中选择“Insert/Remove Breakpoint”命令。

雪要说明的是,若在断电所在的代码行中在使用上述快捷方式进行操作,则相应的位置断点被清除。

若此时用快捷菜单方式进行操作,菜单项中还包含“Disable Breakpoint”命令,选择此命令后,该断点被禁用,相应的断点标志由原来红色的实心圆边为空心圆。

6.控制程序的运行控制程序运行的具体步骤如下。

(1)选择“编译”菜单→“开始调试”子菜单的“去”命令,或单击“编译微型条”中的按钮,启动调试器。

(2)程序运行后,在客户区单击鼠标左键,由于程序中该信息的映射函数中设置了断点,因此程序会在该断点处停顿下来。

(3)这是可以看到一个黄色小箭头,它指向即将执行的代码。

而且,原来的“编译”菜单会变成“Debug”(调试)菜单,如图所示。

其中有四条命令Step Into,Step Over,Step Out和Rursor是用于控制程序运行的,其含义是:●Step Over的功能是运行当前箭头指向的代码(只运行一条代码)。

●Step Into的功能是如果当前箭头所指的代码是一个函数的调用,则用Step Into进入该函数进行单步执行。

●Step Out的功能是是程序运行至光标所指的代码处。

●Run to Cursor的功能是使程序运行至光标所指的代码处。

(4)选择“Debug”(调试)菜单中的“Stop Debugging”命令或直接按快捷键【Shift+F5】或者单击“调试”工具栏中的按钮,终止调试器。

7.退出Visual C++ 6.0。

退出Visual C++ 6.0有两种方式:一种是单击主窗口右上角的“关闭”按钮,另一种是选择“文件”→“退出”菜单命令。

五、结果分析与总结:在这次编程中,我的感触很深,尤其是对代码的认识,我一不小心就会出错,导致程序无法运行,其实只是一点错误而已,也许只一个字母错了,结果就会完全不同,这也许就是细节决定成败吧!在以后的学习过程中我会多加注意的。

教师签名:年月日河南师范大学计算机与信息工程学院。

相关主题