您的位置:首页 > 编程语言 > C语言/C++

Visual C++6.0 程序设计从入门到精通(二) - MFC应用程序的启动和运行机制

2015-12-22 09:00 447 查看

1. 全局对象theapp

MFC
应用程序的启动和运行依赖于应用程序类对象,这个类对象在程序中只能有一个,且是全局的。

2. 应用程序类对象的数据成员

CWinApp
所包含的数据成员主要用于存放和控制应用程序自身的信息,主要数据成员有:

-
m_pszAppName
: 指定了应用程序名字;

-
m_hInstance
: 标示了应用程序的当前实例;

-
m_lpCmdLine
: 指示一个以
NULL
结尾的字符串,指向应用程序的命令行;

-
m_nCmdShow
: 指示最初如何显示窗口;

-
m_pszExeName
:应用程序的模块名称;

-
m_pszHelpFilePath
: 应用程序的帮助文件路径;

-
m_pszProfileName
: 应用程序对应的配置文件ini文件名。

要想获取意思信息,需要使用afx全局函数,主要有以下:

-
AfxGetApp
: 返回指向应用程序的
CWinApp
对象的指针;

-
AfxGetInstanceHandle
:返回应用程序实例的句柄。

-
AfxGetResourceHandle
:返回应用程序资源的句柄。

-
AfxGetAppName
: 返回应用程序的名称。

以上程序可以再应用程序代码的任何位置使用。

3. 应用程序的启动流程

MFC
程序的运行和启动流程依次执行以下几个步骤,这些步骤在
MFC
程序运行的过程中是自动完成的,编程被屏蔽在外,具体如下:

应用程序对象产生(
theApp
), 配置内存,设定初值;

调用
AfxWinMain()
函数,执行
AfxWinInit()
函数,后者调用
AfxInitThread()
函数,把消息队列加大到96;

AfxWinMain()
函数执行
InitApplication()
函数;

AfxWinMain()
函数执行
InitInstance()
函数,它是
CWinApp
的虚函数,必须重载并修改它;

InitInstance()
函数调用
Create()
函数,产生主窗口,在生成窗口前,
Create()
函数注册有关窗口类;

回到
InitInstance()
函数继续执行
ShowWindow()
函数显示窗口;

执行
UpdateWindow()
函数,发出
WM_PAINT
消息;

回到
AfxWinMain()
函数,执行
Run()
函数,进入消息循环。

4. run()函数调用机制

应用程序的大部分时间都是在应用程序类的
Run()
成员函数中进行处理。
WinMain()
函数在初始化应用程序实例之后,就调用
Run()
函数处理消息循环。

下图为Run()函数的消息循环机制示意图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: