VC++ 之MFC内部机制一

本文详细介绍了MFC(Microsoft Foundation Classes)内部的工作原理,包括如何通过全局对象启动应用程序,以及构造函数如何初始化全局对象。此外,还探讨了全局对象的作用及其在MFC应用程序中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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函数

关联在一起。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值