
Win32程序是从WinMain开始执行的,但是MFC把WinMain给封装了,不会出现在你的代码里面,他已经编译到mfc80dll了(VS2005)了。
在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,然后程序结束。
你最早可以调试的地方要么是你App的构造函数,不过一般从InitInstrance开始。
如果添加了system("pause"); 则不会执行下面的代码。相当于程序并没有结束。
方法:
在VS中配置项目属性->链接器->系统->子系统设为:控制台(/SUBSYSTEM:CONSOLE),然后用ctrl+F5运行(不调试运行)。
这个不难,没用过VS2010,但用过VS2012,因为那个是调试版本下的,需要MFC什么什么的支持,而且文件比较大,设置一下就好,我们需要的是一个纯净版的程序,在VS2012里点击生成-->配置管理器在里面把选择的Debug改选成Release,然后在运行一次程序,会发现工程里面多了个Release的文件夹,里面的那个就是了,在其它电脑上也能运行,而且文件比Debug里面的小很多没用过VS2010,但用过VC++60和VS2012, *** 作应该大同小异,如果是VC++60de,在Build-->Setactiveconfigration里面设置,不管软件怎么升级,原理不会变, *** 作都一样
以上就是关于VC中MFC从哪里开始运行,MFC怎么调试,很急呀全部的内容,包括:VC中MFC从哪里开始运行,MFC怎么调试,很急呀、vs2017编辑mfc程序,显示“线程 0x163c 已退出,返回值为 0 (0x0)。”而且自动关闭对话框,怎么解决、如何在VS2017中配置MFC开发等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)