MFC学习日记一:MFC内部运行原理
来源:互联网 发布:php初级程序员要求 编辑:程序博客网 时间:2024/04/30 03:49
Windows编程主线:
设计窗口类
注册窗口类
产生窗口
显示窗口
更新窗口
做消息循环
将消息路由到窗口中去处理
WinMain函数是所有程序的入口函数
Mfc的WinMain函数是当我们编译链接的时候编译器将WinMain链接到程序当中了
WinMain函数是在Msdn安装的位置的MFC文件夹下SRC目录下APPMODUL.CPP里就有_tWinMain它是一个宏右击它选择Gotodefinition就可以看到(对应我自己的电脑是在E:\vc6.0辅助\MFC\SRC\APPMODUL.CPP)
测试MFC程序运行主线:
1、先在 APPMODUL.CPP里的_tWinMain函数里设置一个断点(这里测试程序首先是从这个函数进入的)-》‚2、在CTestApp类中的构造函数CTestApp()里设置断点(红色代表是自己工程名字)-》3在这个构造函数紧接着的下边的实例对象CTestApp theApp;这里加上断点;
调试运行上述过程,程序是先到3-》2-》1 (释:先实例化这个全局对象theApp,然后会调用CTestApp 的构造函数)
这个theApp是一个应用程序对象,表示了应用程序本身,每一个MFC程序当中有且仅有一个从CWinApp所派生出来的类,也有且仅有一个应用程序类所实例化的一个对象,它就表示了应用程序本身。
//*************为什么程序会先实例化theApp这个全局对象的解释,看了下面这个程序就懂了#include <iostream.h>int a=6;void main(){//在这里加上断点,有鼠标放在上面的a上看看a的值cout<<a<<endl;} //****************在执行main函数之前就为a分配好了内存空间,这里在进入main之前a的值已经是6了。
带Afx(Application framework (x)没有含义)前缀的函数是应用程序框架类的函数;
因为C++不是完全面向对象的语言,为了让各个类能有机的组织在一起,定义了一些全局的函数,这些全局的函数就是应用程序框架类的函数,这些函数在每个类中都能调用。
在WinMain函数中调用AfxWinMain(在SRC目录下的WINMAIN.cpp中)函数,在这个里面CWinApp* pApp = AfxGetApp();这一句来获取CWinApp指针,这个指针就是在CWinApp这个底层的构造函数中pThreadState->m_pCurrentWinThread = this;这个this指针,指向的是CTestApp对象的指针;
在AfxWinMain函数里有pApp->InitApplication()是做一些内部初始化管理用的;
在AfxWinMain函数里有pThread->InitInstance(),他调用的是子类CTestApp里的InitInstance(),因为它是一个虚函数。
在AfxWinMain函数里有nReturnCode = pThread->Run();完成了消息循环
应用程序已经帮我们设计好了几种窗口类,我们只需要运行的时候注册一下就好了,注册窗口类是AfxEndDeferRegisterClass(在SRC目录下的WINCORE.cpp中)函数里进行注册,它会根据不同的窗口类选择不同的窗口进行注册
凡是从CWnd派生出来的类都叫窗口类
CMainFrame窗口叫框架窗口,是整个应用程序外边的大窗口,CTestView类是中间纯白的窗口
注册窗口AfxDeferRegisterClass是一个宏,定义在SR目录下的AFXIMPL.H文件中定义的是AfxEndDeferRegisterClass
应用程序进入WinMain函数后是在创建窗口之前PreCreateWindow注册窗口
凡是带Ex的函数都是扩展的函数
定义CreateStruct是为了可以在创建窗口之前有机会去修改窗口的外观
在CTestApp里的
m_pMainWnd->ShowWindow(SW_SHOW);//*************显示窗口
m_pMainWnd->UpdateWindow(); //*************更新窗口
在SRC目录下的WINMAIN.cpp文件中执行
nReturnCode = pThread->Run();//************************消息循环
它调用的是CWinThread::Run函数(在SR目录下的THRDCORE.cpp中)调用PumpMessage进行do{}while的消息循环
要知后事如何,请见下回分解
- MFC学习日记一:MFC内部运行原理
- MFC学习日记二:MFC内部运行原理
- MFC(一)——Windows程序内部运行原理
- MFC笔记 Windows程序内部运行原理
- MFC基础:Windows内部程序运行原理
- 【MFC】1.Windows程序内部运行原理
- MFC视频教程(孙鑫)学习笔记1-Windows程序内部运行原理
- MFC编程第一节:Windows程序内部运行原理
- MFC内部运行来龙去脉追踪
- MFC内部运行来龙去脉追踪
- MFC内部运行来龙去脉追踪
- MFC内部运行来龙去脉追踪
- MFC内部运行来龙去脉追踪
- MFC内部运行来龙去脉追踪
- MFC内部运行来龙去脉追踪
- MFC程序运行原理
- VS2008 MFC内部工作原理
- MFC内部组织原理结构
- matlab中帮助命令
- 游戏引擎Andengine总结(二):AndEngine引擎运行原理
- 关于程序员成长的一点思考
- C++反汇编八(函数调用_Debug版本)
- 浅析SMC技术
- MFC学习日记一:MFC内部运行原理
- 我的学习笔记004--javascript实现旋转导航菜单mxx
- 当你走不下去的时候
- Axis2实践
- Linux Shell 学习笔记 ---- xargs
- iPad商标门--苹果败诉,,之后是和解么???
- 使用Perl创建指定编码格式的文件, 如创建utf-8格式
- 数组面试题之序列
- 闭包