MFC程序运行原理
2015-11-07 17:31
260 查看
一、首先利用全局应用程序对象theApp启动应用程序。正是产生了这个全局对象,基类CWinApp中的this指针才会指向这个对象。如果没有这个全局对象,程序在编译时不会出错,但是在运行时会出错。
二 、调用全局应用程序对象的构造函数,从而就会先调用基类CWinApp的构造函数。后者完成应用程序的一些初始化工作,并将应用程序对象指针保存起来。
三、进入WinMain函数。在AfxWinMain函数中可以获取子类(对Test程序来说,就是CTestApp类)的指针,利用此指针调用虚函数:InitInstance,根据多态性的原理。实际上调用子类的CTestApp的InitInstance函数。后者完成应用程序的一些初始化工作,包括窗口类的注册、创建、窗口的显示和更新。期间会多次调用CreateEx函数,因为一个单文档MFC应用程序有多个窗口,包括框架窗口、工具条、状态条等。
四、进入消息循环,虽然也设置了默认的窗口过程函数,但是,MFC应用程序实际上是采用消息映射机制来处理各种消息的。当收到WM_QUIT消息时,退出消息循环,程序结束。
二 、调用全局应用程序对象的构造函数,从而就会先调用基类CWinApp的构造函数。后者完成应用程序的一些初始化工作,并将应用程序对象指针保存起来。
三、进入WinMain函数。在AfxWinMain函数中可以获取子类(对Test程序来说,就是CTestApp类)的指针,利用此指针调用虚函数:InitInstance,根据多态性的原理。实际上调用子类的CTestApp的InitInstance函数。后者完成应用程序的一些初始化工作,包括窗口类的注册、创建、窗口的显示和更新。期间会多次调用CreateEx函数,因为一个单文档MFC应用程序有多个窗口,包括框架窗口、工具条、状态条等。
四、进入消息循环,虽然也设置了默认的窗口过程函数,但是,MFC应用程序实际上是采用消息映射机制来处理各种消息的。当收到WM_QUIT消息时,退出消息循环,程序结束。
相关文章推荐
- Deep Learning 8_深度学习UFLDL教程:Stacked Autocoders and Implement deep networks for digit classification_Exercise(斯坦福大学深度学习教程)
- Linux内核模块编程-字符设备驱动
- 解决Studio引用友盟引起的/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
- JNI中如何在本地代码中生成和操作Java的对象和字符串,并编写应用实例
- 软工总述
- DS5020配置
- [原]Gson - Unparseable date
- dos 删除文件夹 rd
- java课后作业6
- ThinkPHP快速入门4-路由,视图,变量输出
- 三子棋you can
- HDU5256 序列变换(LIS求严格上升子序列)
- OC----面向对象
- 机器学习实战笔记(Python实现)-02-k近邻算法(kNN)
- java 双重检查锁定及单例模式
- 使用编程语言进行截图的研究报告
- C++中的new/delete和new[]/delete[]
- java练习——接口与继承
- 国际象棋
- JavaScript无提示关闭当前页面窗口,兼容IE/Firefox/Chrome