VC++ 之MFC内部机制一
来源:互联网 发布:斯琴格日乐 知乎 编辑:程序博客网 时间:2024/06/04 18:07
VC++ 之MFC内部机制一
概论
产生全局对象来启动应用程序,调用子类构造函数对全局对象进行初始化,进而调用CWinApp构造函数进行初始化,
在CWinApp构造函数中,完成了应用程序初始化工作,同时将子类的指针保存起来,再进入WinMain()函数,在AfxWinMain()中,
获取子类的指针,用这个指针去调用InitInstance()虚拟函数,进而调用子类InitInstance()函数,在这个子类的
InitInstance()完成应用程序初始化工作:窗口注册,窗口创建,窗口显示,更新,消息循环.
一、
1.MFC是面向对象函数库,可以完成Windows应用程序开发;
2.在生成基于MFC的应用程序时,会产生如下的类(以建立Test为名字的工程为例,以下的代码均以此为例):
CAboutDlg
CMainFrame
CTestApp
CTestDoc
CTestView
3.在编译链接时应用程序时,由链接器在MFC中找到WinMain函数,并链接到当前的应用程序中;
4.关于全局变量和全局对象,都在加载main函数之前分配内存空间,并进行初始化工作,顺序为:基类构造函数-->子类构造函数-->全局对象-->main函数;
如下的例子:
///////////////////////////////////////////////
// main.cpp
///////////////////////////////////////////////
二、
1.全局对象的作用:
在生成CTestApp类中,构造函数CTestApp()后有一个全局对象:
////////////////////////////////////////
////////////////////////////////////////
为什么定义一个全局对象,在main函数之前执行?全局对象有什么作用?
全局对象 theApp 是一个应用程序对象,每一个MFC应用程序中,有且仅有一个从 CWinApp 派生出来的类,
那么也就只有一个从应用程序实例化得到的对象,这个对象就表示了应用程序本身。
(在Win32 SDK中,表示一个应用程序,从WinMain入口开始,通过一个应用程序实例号(标识)来表示)
在基于MFC的应用程序中,是产生一个应用程序对象theApp,来唯一表示这个应用程序。
CWinApp在appcore.cpp中--全局对象theApp--子类构造函数调用CTestApp()--基类构造函数调用CWinApp()在appcore.cpp中
将派生类同微软提供的基类进行关联,从而把在应用程序中要进行的初始化工作和全局对象的构造
在CWinApp得以完成。通过这种方式,不管从哪一个类进行派生,都可以把子类和基类和WinMain函数
关联在一起。
- VC++ 之MFC内部机制一
- VC++ 之MFC内部机制二
- VC++ 之MFC内部机制三
- VC++ 之MFC内部机制四
- MFC内部机制探秘
- MFC/VC 消息机制
- [C++ VC MFC] MFC消息响应机制
- MFC消息机制一
- VC/MFC之ListCtrl控件使用经验总结(一)(
- 我的VC 6.0+MFC学习之路(一)
- VC/MFC之ListCtrl控件使用经验总结(一)
- VC之托盘 MFC
- VC++&MFC之seticon
- 【VC++游戏开发#一】深入剖析MFC的WinMain和消息机制
- MFC之消息机制
- VC++/MFC学习笔记(一)
- VC++--MFC 常用API(一)
- 孙鑫vc视频教程笔记(一) 之 VC++ MFC属性页使用说明
- How to compile Media Player Classic use VS2005
- VS2005 directshow 编译开发环境的配置
- ASP.NET使用Session得常用问题集锦
- c++ extern "C" 目的 原理 使用方法
- org.apache.commons.beanutils.BeanUtils用法
- VC++ 之MFC内部机制一
- flex和javascript比较
- jsp中文乱码
- pda截屏
- this,base 在继承中的作用
- Dstat: Versatile resource statistics tool
- Action请求的写法
- JavaScript的事件代理比你想的要简单
- 守望双子星