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()函数的消息循环机制示意图:
相关文章推荐
- 跨平台CMake的编写
- c++实现大数乘法
- 我的c语言总结
- c语言总结
- C/C++语言复习(一)
- c++异常处理机制示例及讲解
- 位反转的最佳算法(C语言实现)
- 洪恩软件之编程之道C/C++程序设计入门视频教程
- C语言:快速排序
- 【C++ STL应用与实现】23: 如何使用std::mem_fn (since C++11)
- c语言之基础-1
- c++实现大数加法(含负数)
- CEdit::GetLine 在Win7上返回字符串乱码问题的解决方案 CEdit::GetLine (MFC, VC++6) returns extra characters in Windows
- C++Builder组件
- C++中的单例模式
- 《C语言及程序设计》第十一讲实践项目
- 一起talk C栗子吧(第七十九回:C语言实例--父进程与子进程)
- C++单例模式实现及可能的问题
- C语言总结
- C++查找一个目录下特定扩展名文件的一个小技巧