目录

  • 建立新工程
  • 程序中对象类的关系
  • 程序执行流程
    • 1.CtestApp theApp
    • 2.调用构造函数
    • 3.进入Winmain函数
    • 4.初始化
  • 总结
  • 参考博客链接

建立新工程

打开visual studio,我这里用的是2017,其他版本的创建类似

这里默认已安装MFC板块,创建名为“test”的MFC应用程序


创建基于对话框的MFC程序除了在第二个窗口中需要勾选“基于对话框”外,其余的默认即可





至此一个基于对话框的MFC程序创建完成

程序中对象类的关系

程序创建后,真正需要我们关心的,其实就两个文件,其他的都是vs提供的组件,即test.cpp和testDlg.cpp两个文件

在ReadMe.txt文件中详细说明了各个文件的具体作用



test.cpp作为程序的主文件,即程序源文件。
testDlg.cpp是窗口文件,即可视化窗口文件。
mfc程序要求至少要有一个应用程序类(CtestApp)和一个窗口框架类(CtestDlg),两个类共同构成了一个最简单的MFC程序

程序执行流程

打开一个MFC工程,程序执行流程如下:

1.CtestApp theApp

即在主函数之前的全局变量定义

2.调用构造函数

3.进入Winmain函数

这个函数在创建工程后自动提供,不在创建的工程文件里,而是隐藏在vs安装目录下,我参考一个博客找过,但没找到。末尾会附上参考博客。

4.初始化

会运行test.cpp中的InitInstance()函数

还包括窗口类注册,窗口产生,显示和更新以及消息循环
关于窗口的函数,由CtestDlg类完成,包括主窗口中其余控件和窗口的操作

至此,程序运行完毕,会出现如下效果

总结

一个和完整的MFC程序,至少包括一个应用程序类和一个窗口框架类。不去细抠里面类似控件的使用,具体实现功能,想上去还是很简单的,只是MFC中具体实现代码很陌生,甚至是看上去很复杂的样子。
而且MFC程序工程创建出来,不想windowsAPI程序一样,能从头看到尾看程序的执行过程,MFC封装了很多API,或许是代码量变少了,但是也给初学者比如我带来了很大的学习麻烦。
参考了很多博客,写的很详细,限于自己的知识量,看的还是云里雾里,希望后续学习能够更深层次理解。

参考博客链接

https://blog.csdn.net/husongchao/article/details/5063786.

https://blog.csdn.net/zhengjuexi4456/article/details/51841557?utm_medium=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.channel_param.

一个基于对话框的简单MFC程序分析相关推荐

  1. VS如何新建一个基于对话框的MFC工程并添加按钮

    学习MFC的初学者,入门的步骤很重要,新建一个基于对话框的MFC应用程序,并通过拖拉按钮等,初步搭建自己的MFC工程. 工具/原料 笔记本电脑 VS2010 方法/步骤 打开VS2010,并新建MFC ...

  2. 用C语言编写一个Linux下的简单shell程序

    这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...

  3. java 插桩 工具_一个基于Eclipse的通用Java程序插桩工具.pdf

    第38卷第7期 计算机科学 V01.38NO.7 Science 2011 2011年7月 Computer July 一个基于Eclipse的通用Java程序插桩工具 郑晓梅 (南京中医药大学信息技 ...

  4. 学习C++项目——一个基于C++11简单易用的轻量级网络编程框架 1

    一个基于C++11简单易用的轻量级网络编程框架 一.项目下载.导入.编译和运行   现在准备深入学习 C++ ,先肝一个项目,这个项目是<一个基于C++11简单易用的轻量级网络编程框架>, ...

  5. Moodlens:一个基于表情符号的中文微博情感分析系统(A3, SIGKDD2012)

    Moodlens: an emoticon-based sentiment analysis system for chinese tweets Moodlens:一个基于表情符号的中文微博情感分析系 ...

  6. java 复杂网络分析_基于复杂网络的Java程序分析工具设计与实现思路浅谈

    基于复杂网络的Java程序分析工具设计与 实现思路浅谈 摘要:近年来,随着科学技术的进步,计算机技术发展速度的加快,使得软件价值也逐步提高,不管是软件系统的应用领域,还是其规模均获得了相应的扩大,且软 ...

  7. AVR单片机计算器C语言源程序,一个基于AVR单片机的计算器程序.doc

    一个基于AVR单片机的计算器程序 #include #include//延时函数的头文件 #include // 中断函数的头文件 #define uint unsigned int #define ...

  8. 如何做一个基于微信失物招领小程序毕业设计毕设作品

    分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):我们微信小程序项目属于CS架构,C客户端是我们要开发的小程序,S端是我们要开发的后台管理系 ...

  9. 如何做一个基于微信求职招聘小程序毕业设计毕设作品

    分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):我们微信小程序项目属于CS架构,C客户端是我们要开发的小程序,S端是我们要开发的后台管理系 ...

  10. 机器学习 | 一个基于机器学习的简单小实践:波斯顿房价预测分析

    本文采用Kaggle上面的Boston HousePrice数据集展示了如何建立机器学习模型的通常过程,包括以下几个阶段: 数据获取 数据清洗 探索性数据分析 特征工程 模型建立 模型集成 标签变量( ...

最新文章

  1. 044_CSS33D转换
  2. 70. Climbing Stairs
  3. 计算机主机内部结构连接,电脑主机内部结构介绍
  4. mysql 字符集测试_MySQL多字符集备份恢复测试
  5. 配置文件空格丢失问题
  6. POJ--1300--Door Man【推断无向图欧拉通路】
  7. vue+webapi 实现WebSocket 推送
  8. java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
  9. 打造自己的 PTM!新词挖掘+预训练
  10. nodejs调用google翻译api
  11. python 读取geotiff_python gdal 写GeoTiff文件
  12. 笔记本计算机涂硅脂,笔记本电脑怎么涂cpu散热硅脂
  13. NCA(Neighborhood Components Analysis)
  14. 安卓查看内存读写测试软件_关于手机运行内存的四大误区,你信了几个?
  15. 石墨文档链接不到服务器,石墨文档怎么打开链接
  16. 利用人工智能的优点,明了人工智能的局限。不要依赖它
  17. 正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
  18. CentOS7配置nexus开机自启动
  19. JS截取URL中最后一个斜杆前(后)的内容
  20. python web和java web区别_成都汇智动力-谈谈个人认为的JavaWeb开发与PythonWeb开发的区别...

热门文章

  1. 浪潮财务软件遇到问题
  2. ARM指令集和X86指令集对比
  3. 1、JavaWbe基本概念
  4. VoIP服务器Asterisk安装及部署
  5. i3wmvim终极配置
  6. .net pc微信扫码登录
  7. c mysql开发工具_Windows平台下Mysql C程序设计
  8. VTK读取rawdata
  9. java冒泡排序及面向对象基本概念
  10. Java面试八股文(素材来自网络)