当前位置:文档之家› MFC基本应用程序的建立实验报告

MFC基本应用程序的建立实验报告

计算机与信息技术学院综合性、设计性实验报告专业:计算机科学与技术年级/班级:10计科一班一、实验目的:(1)了解Windows的基本编程特点(2)会使用MFC AppWinzard(exe)创建单文档应用程序(3)学会添加消息映射等简单功能(4)掌握用项目工作区的ClassView页面添加数据成员的方法(5)学会和掌握调试的一般步骤和过程二、实验内容:(1)在一个默认的单文档应用程序Ex_SDI中通过映射计时器消息实现这样的功能:无论在Ex_SDI应用程序窗口的客户区中单击鼠标左键或右键,都会弹出“消息”对话框,显示左键或右键的单击次数。

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

三、实验步骤:1、创建工作文件夹打开计算机,在“G:\Visual C++程序\实验”文件夹中创建一个新的子文件夹“实验8”。

2、创建单文档应用程序Ex_SDI创建单文档应用程序Ex_SDI的具体步骤如下:(1)启动Visual C++(2)选择“文件”→“新建”菜单命令,显示“新建”对话框。

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

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

(4)单击“确定”按钮,显示“应用程序向导”对话框。

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

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

(5)编译运行。

具体操作如下:运行结果如下:3、添加数据成员:添加数据成员的的具体步骤如下:(1)展开项目工作区窗口ClassView中的所有类结点。

(2)用鼠标右键单击CEx_SDIView类结点,从弹出的快捷菜单中选择“Add Member Variable(添加成员变量)”,弹出如图所示的“Add Member Variable”对话框。

(3)在Variable Type框中输入成员变量类型int,在Variable Name框中输入变量名称m_nLButton。

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

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

(4)按相同的方法,在CEx_SDIView中添加一个公有型成员变量m_nRButton,变量类为int.(5)在项目工作区窗口Class View中,展开CEx_SDIView的所有结点,双击构造函数CEx_SDIView()结点,在CEx_SDIView类的构造函数中添加下列成员变量初始化代码:CEx_SDIView::CEx_SDIView(){m_nLButton=m_nRButton=0;}4、添加消息映射:添加消息映射的具体步骤如下:(1)按“Ctrl+W”快捷键打开“MFC ClassWizard”对话框。

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

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

在Object IDs列表框中选定CEx_SDIView,而在Messages列表框中选定WM_LBUTTOMDOWM消息。

(3)双击Messages列表中的WM_BUTTOMDOWM消息或者单击“Add Function”按钮,都会在CEx_SDIView类中添加该消息的映射函数OnLButtonDowm,同时在Member functions列表中显示这一消息映射函数和被映射的消息。

映射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消息映射,并在映射函数中添加下列代码: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);}(7)编译运行并测试,结果如图:5、设置断点在设置断点之前,首先要保证程序中没有语法错误,所谓断点就是告诉调试器在何处暂时中断程序的进行,以便查看程序的状态以及浏览和修改变量的值等。

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

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

(3)用下列3种方式之一设置断点,会在代码行“m_nLButton++;”的最前面的窗口页边距上有一个深红色的实心圆块,如图:①按快捷键F9②在Build工具栏上单击按钮③在需要设置(或清除)断点的位置上单击鼠标右键,在弹出的快捷菜单中选择“Insert/Remove Breakpoint”命令6、控制程序运行具体步骤如下:(1)选择“组建”菜单→“开始调试”子菜单的“去”命令,或单击“编译微型条”中的按钮,自动调试器。

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

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

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

这是Debug菜单其中4条命令Step Into、Step Over、Step Out和Run to Cursor是用于控制程序运行的,其含义是:①Step Over的功能是运行当前箭头指向的代码(只运行一条代码)②Step Into的功能是如果当前箭头所指向的代码是一个函数的调用,则用StepInto进入该函数进行单步执行③Step Out的功能是如果当前箭头所指向的代码是在某一函数内,用它是程序运行至函数返回处④Run to Cursor的功能是是程序运行至光标所指的代码(4)选择“Debug”菜单中的“Stop Debugging”命令或直接按快捷键Shift+F5或单击“编译微型条中的”按钮,启动调试器。

7、查看和修改变量的值为了更好地进行程序调试,调试器还提供了一系列的窗口,用于显示各种不同的调试信息,可借助“查看”菜单下的“调试窗口”子菜单访问它们,事实上,当启动调试器后,Visual C++的开发环境会自动显示出Watch 和Variables两个调试窗口,如图:除了上述窗口外,调试器还提供QuickWatch、Memory、Registers、Call Stack以及Disassembly等窗口。

但对于变量值的查看和修改,通常可以使用QuickWatch、Watch 和Variables这3个窗口。

以下步骤使用这三个窗口来查看、修改m_nLButton或m_nRButton值。

⑴启动调试器,程序运行后,单击鼠标左键,程序停顿下来。

⑵如上图,可以看到Variable窗口有3个页面:Auto、Locals和This。

这些页面内均有“名称”和“值”两个域,调试器自动填充它们。

⑶在“调试”工具栏上,单击按钮或快捷键F10,箭头指向了下一句代码“SetTimer(1,50,NULL);”,同时,Variable窗口中的m_nLButton值变成了1。

实际上,若仅需要快速查看变量或表达式的值,则只需要将鼠标直接放在代码中该变量或表达式上,片刻后,系统会自动弹出一个小窗口显示出该变量或表达式的值。

⑷在Watch窗口中,单机左边“名称”域下的空框,输入m_nRButtoon,按Enter键,相应的值会自动出现在“值”域中,同时,又在末尾处出现新的空框,添加新的变量或表达式如图所示:需要说明的是,Watch窗口有4个页面:Watch1、Watch2、Watch3和Watch4,在每一个页面中有一系列用户要查看的变量或表达式,用户可以将一组变量或表达式在同一个页面中。

⑸选择“调试”→“QuickWatch”命令或按快捷键Shift+F9或者在“调试”工具栏上单击按钮,将弹出如图所示的“QuickWatch”窗口。

其中,“表达式”框可以让用户输入变量名或表达式,然后按Enter键或单击“重置”按钮,就可以在“当前值”列表中显示相应的值,若要修改其值的大小,则可按Tab键或在列表项的“Value”域中双击该值,再输入新值按Enter键就可以了。

单击“添加监视”按钮可将刚才输入的变量名或表达式及其值显示在“Watch”窗口中。

从上述过程可以看出,调试一般按照这样的步骤进行:修正语法错误→设置断点→启用调试器→控制程序运行→查看和修改变量的值。

8、退出Visual C++9、实验总结与体会这次试验我认识了Windows的基本编程特点并学会使用MFC AppWinzard(exe)创建简单的单文档应用程序和添加消息映射等简单功能,还会通过打开ClassView页面为程序代码添加数据成员,并进一步的熟悉和掌握了调试的一般步骤和过程,在默认的单文档应用程序Ex_SDI中通过映射计时器消息实现了实验所要求的功能,并使用调试器对流程和鼠标次数进行了调试,到达了实验目的,以后我应该更加勤于上机实验,把理论付诸实践。

相关主题