VC中MFC从哪里开始运行,MFC怎么调试

VC中MFC从哪里开始运行,MFC怎么调试,第1张

在MFC中的执行顺序是这样的,首先Windows调用WinMain函数,WinMain里面调用AfxWinMain函数,注意你的代码现在来了,AfxWinMain函数调用对应你程序的APP类(这个类是基于CWinApp的,CWinApp又是基于CWinThread的)的InitInstance函数,如果InitInstance返回TRUE,就调用CWinThread的Run函数,这个函数你可以重载,但是一般不重载。在Run函数里面是Windows的消息循环,就是Win API编程里面的那个while循环以及TranslateMessage和DipatchMessage,当然MFC弄得比较复杂,有一个PumpMessage的机制。当程序收到WM_QUIT消息之后,Run函数返回,紧接着CWinThread::ExitInstance会被调用,如果你重载了ExitInstrance则会调用你的。最后程序结束。如果InitInstance返回FALSE,那么Run函数就不会执行,直接调用ExitInstance,然后程序结束。

有时候下断点并不是好主意,特别是对于调试关于显示/绘图的代码,这种代码如果想用断点调试你得把你的程序设置成总是前端显示的窗口,如任务管理器那样.

另外你可以在合适的位置让插入一些代码让扬声器发生如:插入MessageBeep,Beep等函数

还可以为程序创建一个控制台窗口,输出一些调试信息.还可以使用文件来纪录调试输出信息.

如果使用控制台(就是DOS程序那样的窗口,在任何位置调用AllocConsole()就能得到一个)你最好封装一个专门输出调试信息的类或者一套完成此功能的函数,这样不用每次都写程序都写一大段复杂的代码.我就是这样做的.

这种控制台的输出要用WriteConsole以前的那种printf好像不能正常

这里有一系列控制台输出的文档:

http://msdn.microsoft.com/en-us/library/ms682073(v=vs.85).aspx

在c++中有以下4种方法对程序进行调试方法:

1、先打开 一个 已编好 的程序 ,如下。这段代码 表示 :输入一个整数,计算他的累乘n,n 为输入的整数。

2、将鼠标光标 移到 程序开头, 单击 工具栏“Step into”图标,在行数 的右边会出现 一个 黄色的小箭头。它表示程序 执行了 这一行代码的上一行,还未执行 当前这行。

3、继续点击 “Step into”,黄色箭头 向下移动,代码向下一行执行。这时,执行了 一个 scanf 输入函数,在d出的 黑色对话框中 输入一个整数 ,比如 3, 再 点击 “enter”键,我们可以发现 窗口中 n 的值 变为了 3 。

4、继续点击 “Step into”,开始执行while 循环。可以发现 窗口中变量 a ,i ,的值在不断变化。当 i =4时 ,满足条件 ,退出了 循环,开始执行 printf 输出函数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8041528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存