MFC的代码是从哪里开始的?

来源:互联网 发布:淘宝官方网 编辑:程序博客网 时间:2024/04/28 03:19


                  Win32程序是从WinMain开始执行的,但是MFC把WinMain给封装了,不会出现在你的代码里面,他已经编译到mfc80.dll了(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开始。



                  MFC是没有主函数滴~机制和底层算法是不一样的~MFC执行的时候首先会初始化窗体和控件~然后进入消息队列~跟你你发送的不同消息去执行不同的操作~


                  从CXXApp的InitInstance函数开始执行的,比如你的工程名叫Test,一定会有个CTestApp的类,该类派生自CWinApp类。

 

                  MFC没有main的,一般是看C...View这个类的实现文件中会增加很多消息响应函数,也就是On开头的函数实现开始看就行了,如果难找的话,直接在Resources栏里看界面,双击控件就可以找到代码。

0 0