当前位置:首页 > 8 - MFC基本应用程序的建立
在Variarble Typ框中输入成员变量类型int,在Variable Name框中输入成员变量名m_nLButton。保留默认的访问方式(Access)为Public。单击“Ok”按钮,这样,就会在CEx_SDIView中添加一个公有型成员变量m_nLButton,变量类型为int。
按相同过的方法,在CEx_SDIView中添加一个公有型成员变量m_nLButton,变量类型为int。 在项目工作区窗口Class View中,展开CEx_SDIView类结点的多有成员结点,双击构造函数CEx_SDIView()结点,在CEx_View类的构造函数中添加下列成员变量初始化代码: CEx_SDIView::CEx_SDIView() {
m_nLButton=m_nRButton=0; }
4.添加消息映射
添加消息映射的具体步骤如下。
按Ctrl+W快捷键打开“MFC ClaaWizad”对话框。 在Class name 组合框中,将类名选定为CEx_SDIView。此时,Object IDs 和Message列表内容会相应地改变。在Object IDs列表框中选定CEx_SDIView,而在Message列表中选定WM_LBUTTONMDOWN消息。
双击Message列表中的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消息映射,并在映射函数中添加下列代码:
void CEx_SDIView::OnTimer(UINT nIDEvent) {
CString str; //创建一个字符串类对象
//通过判断nIDEvent的值来确定是单击鼠标左键还是右键
if(nIDEvent==1)
str.Format(\你已单击鼠标左键%d次!\ if(nIDEvent==2)
str.Format(\你已单击鼠标右键%d次!\ if((nIDEvent==1)||(nIDEvent==2)) {
KillTimer(nIDEvent); //先要关闭计时器 MessageBox(str,\报告\ }
CView::OnTimer(nIDEvent); }
(7)编译运行并测试,结果如下:
5.设置断点
在设置断点之前,首先要保证程序中没有语法错误。所谓断点,实际上是告诉调试器在何处暂时中断程序的运行,以便查看程序的状态以及浏览和修改变量的值等。
(1)在项目工作区的Class View页面中,展开CEx_SDIView下的所有结点。
(2)双击OnLButtonDown结点,会在文档窗口中打开并定位到该信息映射代码处,在代码行“m_nLButtonDown++;”中单击鼠标。
(3)用下列3种方式之一设置断点,会在代码行“m_nLButton++;”的最前面的窗口页边距上有
河南师范大学计算机科学与信息工程学院
一个深红色的实心圆块,如图所示: ①按快捷键F9。
②在Build工具栏上单击按钮; ③在需要设置(或清除)短点的位置上单击鼠标右键,在弹出的快捷键菜单中选择“Insert/Remove Breakpoint”命令。
需要说明的是,若在断点所在的代码行中再使用上述的快捷方式进行操作,则相应的设置断点被清除。若此时使用快捷菜单方式进行操作时,菜单项中还包含“Disable Breakpoint”命令,选择此命令后,该断点被禁用,相应的断点标志由原来的红色的实心圆变成空心圆。如下图所示:
河南师范大学计算机科学与信息工程学院
6.控制程序的运行
控制程序运行的具体步骤如下。
(1)选择“编译”菜单→“开始调试”子菜单的“GO”命令,或单击“编译微型条”中的按钮,启动调试器。
(2)程序运行后,在客户区单击鼠标左键,由于程序中该信息的映射函数中设置了断点,因此程序会在该断点处停顿下来。
(3)这是可以看到一个黄色小箭头,它指向即将执行的代码。而且,原来的“编译”菜单会变成“Debug”(调试)菜单,如图所示。
其中有四条命令Step Into,Step Over,Step Out和Rursor是用于控制程序运行的,其含义是: ①Step Over的功能是运行当前箭头指向的代码(只运行一条代码)。
②Step Into的功能是如果当前箭头所指的代码是一个函数的调用,则用Step Into进入该函数进行单步执行。
③Step Out的功能是是程序运行至光标所指的代码处。
④Run to Cursor的功能是使程序运行至光标所指的代码处。 选择“Debug”(调试)菜单中的“Stop Debugging”命令或直接按快捷键Shift+F5或者单击“编译微型条”中的按钮,启动调试器。 7.查看和修改变量的值
为了更好地进行程序调试,调试器还提供一系列的窗口,用于显示各种不同的调试信息。可借助“查看”菜单下的“测试窗口”子菜单访问它们。事实上,当启动调试器后,Visual C++6.0的开发环境会自动显示出Watch和Variables两个调试窗口,如上图所示。除了上述窗口外,调试器还提供QuickWatch 、Memory、Regieters、Call Stack以及Disassembly等窗口。但对变量的查看和修改来说,通常可以使用QuickWatch、 Watch 和Variables这三个窗口。 以下三个步骤使用这三个窗口来查看、修改m_nLButton或m_nRButton值。 (1)启动调试器,程序运行后,单击鼠标左键,程序停顿下来。
(2)如上图所示,可以看到Variables窗口有三个页面:Auto、locals和This。Auto页面用
河南师范大学计算机科学与信息工程学院
共分享92篇相关文档