从此他剪了寸头,他开始抽烟,他熬夜到三四点,他开始相信钱,不再相信任何人,如果不看镜子,我都不认识他了。。。
---- 网易云热评
一、MFC的概念和作用
1、什么MFC?
全称 Microsoft Fundation Class Library,我们称之为微软基础类库 从硬盘的存在形式上来说MFC就是一个库。 从原理上来说,MFC还是一个程序框架。
2、为什么使用MFC?
基于框架开发,提供工作效率,减少开发周期,降低开发成本。
二、MFC应用程序的分类
1、使用MFC制作自己的库程序:静态库程序,规则动态库程序,扩展动态库程序
2、使用MFC制作自己的窗口程序:
单文档视图架构程序
CFrameWnd - 框架窗口类(封装了框架窗口的操作)
CWinApp - 应用程序类,(封装了关于流程管理)
CDocument -文档类,(封装了关于数据的管理,例如:提取/转换/存储..)
CView - 视图窗口类,(封装了关于视图窗口的操作)
多文档视图架构程序
CMDIChildWnd - 子框架窗口类(封装了子框架窗口的操作)
CMDIFrameWnd - 主框架窗口类(封装了主框架窗口的操作)
CWinApp - 应用程序类,(封装了关于流程管理)
CDocument -文档类,(封装了关于数据的管理,例如:提取/转换/存储..)
CView - 视图窗口类,(封装了关于视图窗口的操作)
对话框架构程序
CWinApp - 应用程序类,(封装了关于流程管理)
CDialog - 对话框窗口类,(封装了关于对话框窗口的操作)
三、MFC类概述
1、CObject - MFC库中绝大部分类的最基类,运行时类信息机制 / 动态创建机制 / 序列化机制
2、CCmdTarget - 消息映射机制的最基类
3、CWinThread / CWinApp - 应用程序类,管理程序流程。
4、CDocument及其子类 - 文档类,管理数据
5、Exceptions - 异常处理类,封装了MFC库中可能出现各种异常情况
6、CFile及其子类 - 文件操作类,封装了文件的读写等等各种操作。
7、CWnd - 所有窗口类的最基类
8、Frame Windows - 框架窗口类,封装了关于框架窗口的各种操作
9、DialogBox - 对话框窗口类,封装了关于各种对话框的操作
10、Views - 视图窗口类,封装了关于各种视图窗口的操作
11、Controls - 控件窗口类,封装了关于各种控件窗口的操作
12、CDC及其子类,绘图设备类,封装了各种绘图设备的操作
13、CGdiObject及其子类,绘图对象类,封装了各种绘图对象的操作
14、Array / List / Map - 封装了标准中的各种容器结构
15、非CObject类 - 封装了标准中的各种结构的操作,例如:CPoint 、CRect、CTime、CString....
四、制作第一个MFC程序,环境为VS2019
1、新建新建Windows桌面向导
2、配置项目
3、将该项目设为启动项
4、修改属性为多字节,静态库中使用MFC
5、新建MFCbase.cpp源文件
6、文件内容为:
7、程序执行流程:
构造theApp(爆破点)
1)将&theApp保存到 当前程序线程状态信息 中。
2)将&theApp保存到 当前程序模块状态信息 中。
进入入口函数(WinMain)
1)利用 AfxGetThread() / AfxGetApp()获取 &theApp
2)利用theApp调用应用程序类的成员虚函数InitApplication (初始化)
3)利用theApp调用应用程序类的成员虚函数InitInstance (创建并显示窗口)
4)利用theApp调用应用程序类的成员虚函数Run(消息循环)
5)当没有消息时,利用theApp调用应用程序类成员虚函数OnIdle (空闲处理)
6)当程序退出时,利用theApp调用应用程序类成员虚函数ExitInstance (善后处理)
8、运行效果:
注意:
::开头的函数为WIN32的API函数
Afx开头的函数为MFC中的全局函数
欢迎关注公众号:顺便编点程