微软MFC程序运行的正确顺序

这篇具有很好参考价值的文章主要介绍了微软MFC程序运行的正确顺序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微软MFC程序运行的正确顺序,Visual Studio技术,microsoft,windows,mfc,微软,c++

 我是荔园微风,作为一名在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运行机制中最重要的环节就是消息的获取与响应。
 

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。文章来源地址https://www.toymoban.com/news/detail-539238.html

到了这里,关于微软MFC程序运行的正确顺序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Visual Studio运行Python程序(超级详细)

    Visual Studio Code,简称 VS Code,是由微软公司开发的 IDE 工具。与微软其他 IDE(如 Visual Studio)不同的是,Visual Studio Code 是跨平台的,可以安装在 Windows、Linux 和 macOS平台上运行。 不仅如此,Visual Studio Code 没有限定只能开发特定语言程序,事实上只要安装了合适的扩展插件,它

    2024年02月09日
    浏览(60)
  • 解决Visual Studio Code程序运行后外部终端界面闪退的问题

    场景: 背景:在vscode下运行C语言程序时,总会出现外部输出终端界面闪退的情况,在查看了许多资料后,终于解决了问题,写下这篇文章记录一下自己解决问题的过程。 代码运行后外部输出界面闪退: 在运行上述代码段后,按照提示输入键入一串成绩(以一个负数作为循环

    2024年02月16日
    浏览(67)
  • Visual Studio 2022报错:项目的目标框架不包含实体框架运行时程序集

    1、右键单击项目-属性,打开如下图 2、如上图,点击红框部分进入下载页面 这是网址:https://dotnet.microsoft.com/zh-cn/download/visual-studio-sdks?cid=getdotnetsdk 3、点击上图红框部分,下载安装即可,不需要重启电脑。 win11系统实测安装X64版本的不行。大家根据自己的版本试一试。

    2024年02月12日
    浏览(63)
  • Visual Studio 2019程序运行出现‘Access violation reading location‘的问题

    在Visual Studio 2019的C++程序调试运行中出现’Access violation reading location’的问题, Unhandled exception at 0xxxxxxxxx (xxxx.dll) in xxxx.exe: 0xxxxxxxxx: Access violation reading location 0xxxxxxxxxx ,进行了解决。 在Visual Studio 2019的C++工程,编译是没有问题的,但是在程序调试运行时经常会出现’A

    2024年02月08日
    浏览(79)
  • 正确卸载Visual Studio 2015

    2024年02月11日
    浏览(44)
  • Visual Studio 2022的MFC框架——theApp全局对象

      我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。  MFC中的WinMain函数是如何与MFC程序中的各个类组织在一起的呢?MFC程序中的类是如何与WinMain函数关联起来的呢? 面对这个问题,我们来分析一下。 双击我在

    2024年02月11日
    浏览(36)
  • visual studio运行项目报错:无法启动程序“xx\visual_studio_2017_sdl_x64.exe“系统找不到指定文件

    之前也经常遇到同样的问题,然后我就一股脑的重装就完事,有时候重装也不能解决问题,是因为没有找到根本原因。 工具 - NuGet包管理 - 管理解决方案的NuGet程序包(N) 直接搜索安装 nupengl 重新运行又报错 然后就编译Ok了

    2024年02月11日
    浏览(63)
  • 微软MFC技术简明介绍

    我是荔园微风,作为一名在IT界整整25年的老兵,今天来看一下微软MFC技术简明介绍 微软公司于1992年上半年推出了C/C++ 7.0 产品时初次向世人介绍了MFC 1.0,这个产品包含了20,000行C++原始代码,60个以上的Windows相关类,以及其它的一般类如时间、数据处理、文件、内存、诊断、

    2024年02月11日
    浏览(37)
  • Visual Studio连接Linux服务器编译CMake项目,生成在Linux上运行的程序

    window系统:Windows 10 企业版 64位操作系统 Linux系统:BigCloud Enterprise Linux 7.8 (Core) Visual Studio:Microsoft Visual Studio Enterprise 2019 版本 16.10.4 根据Microsoft官网文档介绍, 开始之前 首先,请确保已安装 Visual Studio Linux 工作负载,包括 CMake 组件。 它属于 Visual Studio 安装程序中的“使用

    2024年02月13日
    浏览(83)
  • 微软MFC技术中消息的分类

     我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊MFC技术中消息的分类。 微软Windows中的消息虽然很多,但是种类并不繁杂,大体上有3种:窗口消息、命令消息和控件通知消息。 窗口消息是系统中最为常见的消息,它是指由操作系统和控制其他窗口所使用的消息。

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包