我是荔园微风,作为一名在IT界整整25年的老兵,今天来看一下微软MFC程序运行的正确顺序。这真的只是一个小众话题。但是对理解MFC很重要。
很多人写了一堆MFC程序,却不知道MFC程序是怎么运行顺序的。我们就来看一看这个问题。
我在之前的帖子中多次提到,main()函数也就是主函数,是所有程序运行的入口。而MFC中与 main)函数起相同作用的是WinMain()。
通过在我的上篇帖子中所建的名为Message的MFC单文档程序中设置断点,就会发现一个MFC单文档程序运行的顺序如下:
(1)CMessageApp中的全局变量定义。
CMessageApp theApp;
(2)调用CMessageApp构造函数。
CMessageApp::CMessageApp(){}
(3)进入WinMain(函数。
_tWinMain(){}
(4)完成初始化工作:包括窗口类注册、窗口产生、显示和更新。
pThread->InitInstance();
注意:WinMain()函数在此工程文件中找不到,大家可以在 VC++安装路径下的APPMODUL.cpp文件中找到。这个源文件可以用搜索工具找到,然后在tWinMain()处设置断点,按F11键单步执行。
上面是以设置断点的方式全局查看了MFC程序运行的过程。而对于第(4)步又会被再细分为如下几个步骤:
(1)注册窗口类。
AfxEndDeferRegisterClass
(2)创建窗口。
CMainFrame:: PreCreateWindow()
CFrameWnd:: Create()
(3)消息循环。
PumpMessage()
对于MFC程序,MainFrame、View等都是窗口,所以上面的窗口注册与创建、显示等要反复调用多次,一次对应一个窗口,直到这个程序关闭。
因此可以简单将MFC程序运行顺序描述如下:
第一步 调用WinMain()入口函数
第二步 注册窗口类
第三步 窗口实例化
第四步 建立消息循环
第五步 处理消息
从上看到,关联消息的动作占了很大比重,因此,学习消息非常重要。一个人开车时,让车启动、刹车、拐弯,就相当于将“消息”传递给汽车,之后汽车作出响应。代码中的“消息”也是这样一个传递和反应的过程。
最后,大家要知道MFC是一个界面开发系统,但其功能并不仅仅止于此。它提供的类绝大部分用来进行界面开发、关联一个窗口的动作,但它提供的类中有好多不与一个窗口关联,而是一些在 Windows中实现内部处理的类,如消息响应等。而MFC运行机制中最重要的环节就是消息的获取与响应。
文章来源:https://www.toymoban.com/news/detail-539238.html
作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。文章来源地址https://www.toymoban.com/news/detail-539238.html
到了这里,关于微软MFC程序运行的正确顺序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!