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。