一个基于对话框的简单MFC程序分析
目录
- 建立新工程
- 程序中对象类的关系
- 程序执行流程
- 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程序分析相关推荐
- VS如何新建一个基于对话框的MFC工程并添加按钮
学习MFC的初学者,入门的步骤很重要,新建一个基于对话框的MFC应用程序,并通过拖拉按钮等,初步搭建自己的MFC工程. 工具/原料 笔记本电脑 VS2010 方法/步骤 打开VS2010,并新建MFC ...
- 用C语言编写一个Linux下的简单shell程序
这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...
- java 插桩 工具_一个基于Eclipse的通用Java程序插桩工具.pdf
第38卷第7期 计算机科学 V01.38NO.7 Science 2011 2011年7月 Computer July 一个基于Eclipse的通用Java程序插桩工具 郑晓梅 (南京中医药大学信息技 ...
- 学习C++项目——一个基于C++11简单易用的轻量级网络编程框架 1
一个基于C++11简单易用的轻量级网络编程框架 一.项目下载.导入.编译和运行 现在准备深入学习 C++ ,先肝一个项目,这个项目是<一个基于C++11简单易用的轻量级网络编程框架>, ...
- Moodlens:一个基于表情符号的中文微博情感分析系统(A3, SIGKDD2012)
Moodlens: an emoticon-based sentiment analysis system for chinese tweets Moodlens:一个基于表情符号的中文微博情感分析系 ...
- java 复杂网络分析_基于复杂网络的Java程序分析工具设计与实现思路浅谈
基于复杂网络的Java程序分析工具设计与 实现思路浅谈 摘要:近年来,随着科学技术的进步,计算机技术发展速度的加快,使得软件价值也逐步提高,不管是软件系统的应用领域,还是其规模均获得了相应的扩大,且软 ...
- AVR单片机计算器C语言源程序,一个基于AVR单片机的计算器程序.doc
一个基于AVR单片机的计算器程序 #include #include//延时函数的头文件 #include // 中断函数的头文件 #define uint unsigned int #define ...
- 如何做一个基于微信失物招领小程序毕业设计毕设作品
分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):我们微信小程序项目属于CS架构,C客户端是我们要开发的小程序,S端是我们要开发的后台管理系 ...
- 如何做一个基于微信求职招聘小程序毕业设计毕设作品
分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):我们微信小程序项目属于CS架构,C客户端是我们要开发的小程序,S端是我们要开发的后台管理系 ...
- 机器学习 | 一个基于机器学习的简单小实践:波斯顿房价预测分析
本文采用Kaggle上面的Boston HousePrice数据集展示了如何建立机器学习模型的通常过程,包括以下几个阶段: 数据获取 数据清洗 探索性数据分析 特征工程 模型建立 模型集成 标签变量( ...
最新文章
- 044_CSS33D转换
- 70. Climbing Stairs
- 计算机主机内部结构连接,电脑主机内部结构介绍
- mysql 字符集测试_MySQL多字符集备份恢复测试
- 配置文件空格丢失问题
- POJ--1300--Door Man【推断无向图欧拉通路】
- vue+webapi 实现WebSocket 推送
- java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
- 打造自己的 PTM!新词挖掘+预训练
- nodejs调用google翻译api
- python 读取geotiff_python gdal 写GeoTiff文件
- 笔记本计算机涂硅脂,笔记本电脑怎么涂cpu散热硅脂
- NCA(Neighborhood Components Analysis)
- 安卓查看内存读写测试软件_关于手机运行内存的四大误区,你信了几个?
- 石墨文档链接不到服务器,石墨文档怎么打开链接
- 利用人工智能的优点,明了人工智能的局限。不要依赖它
- 正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
- CentOS7配置nexus开机自启动
- JS截取URL中最后一个斜杆前(后)的内容
- python web和java web区别_成都汇智动力-谈谈个人认为的JavaWeb开发与PythonWeb开发的区别...