MFC程序的起动过程分析

1. App()(应用程序对象的构造函数)

基于框架生成的用程序必有且有一个从 CWinApp 派生的象。在建窗口之前先构造该对。因此,最先执行的就是应用程序对象的构造函数

 

2. InitApplication()

与用于 Windows 操作系统的任何程序一样,框架应用程序也具有 WinMain 函数。但在框架应用程序中不必编写 WinMain。它由类库提供,并在应用程序启动时调用。

为初始化应用程序,WinMain 调用应用程序对象的 InitApplication InitInstance 成员函数。对于应用程序的初始化,在概念上分为两种,一种是在程序最初执行的时候只执行一次的初始化。另外一种是程序的“复制”行为发生的时候(包括首次)所进行的初始化。根据MSDN的建议,在InitApplication中的初始化动作应该尽量转移到InitInstance中。

 

3. InitInstance()

Windows 操作系统允许运行同一个应用程序的多个副本或实例。每当应用程序的一个新实例启动时,WinMain 就调用 InitInstance

“MFC 应用程序向导创建的标准 InitInstance 实现执行下列任务:

作为主要操作,创建文档模板,文档模板反过来创建文档、视图和框架窗口。

.ini 文件或 Windows 注册表加载标准文件选项,包括最近使用的文件名。

注册一个或多个文档模板。

对于 MDI 应用程序,创建主框架窗口。

处理命令行以打开命令行上指定的文档或打开一个新的空文档。

当然,完全可以添加自己的初始化代码或修改向导编写的代码。

 

4. Run()

框架应用程序将大部分时间用在 CWinApp 类的 Run 成员函数上。初始化之后,WinMain 调用 Run 以处理消息循环。

Run 循环通过消息循环,检查消息队列中是否有可用消息。如果有可用消息,Run 调度它以进行操作。如果没有任何消息可用(情况往往如此),则 Run 调用 OnIdle 执行您或框架可能需要完成的任何空闲时间处理。如果没有任何消息,也没有任何可执行的空闲处理,则应用程序一直等到有事情发生。当应用程序终止时,Run 调用 ExitInstance

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值