前言
- 各位师傅大家好,我是qmx_07,今天讲解MFC的基础架构
概述
- 介绍:MFC(Microsoft Foundation Classes)是微软公司提供的一个类库,用于在 Windows 操作系统下进行 C++ 应用程序开发
- MFC把Windows SDK API函数包装成几百个类,MFC给Windows操作系统提供面向对象的接口,支持可重用性、自包含性以及其他OPP原则。MFC通过编写类来封装窗口、对话框等其他对象,引入关键的虚函数(覆盖虚函数可改变派生类的功能)来完成,MFC设计者使类库带来的总开销降到了最低
- 本质:在SDK的基础上进行了各种简单的封装,例如窗口类,字符串类等
MFC应用程序类型
- MFC应用程序中的类至少包含一个CWinApp应用程序类和一个CFrameWnd窗口框架类
基于对话框的应用程序:这类程序适合于文档较少而交互操作较多的应用场合,如 Windows 自带的计算器程序。
单文档界面( SDI )应用程序:这类程序一次只能打开一个文档,如 Windows 自带的 Notepad 程序。
多文档界面( MDI )应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换,如 Microsoft Word 。
MFC框架
MFC类分为两类:
- CObject基类的派生类,它们以层次结构的形式组织起来
- 非 CObject 派生类,这些都是独立的类(表示点的 CPoint 类,表示矩形的 CRect 类)
应用程序结构类
- 应用程序结构类主要是CCmdTarget类与它的派生类,CWinApp类,负责程序的执行流程
- CCmdTarget类:MFC类库中消息映射体系的基类,继承于Cobject类,负责把消息命令传递给用户编写的消息响应函数,类似于SDK中的WM_COMMAND,如果需要处理消息,就从CCmdTarget派生一个类
- CWinThread类:CWinThread类继承于CCmdTarget类,负责应用程序内部运行的线程,支持工作线程和用户界面线程,工作线程不能够发送、接收消息,通常用于后台运行。用户界面线程能够发送和接收消息。CWinAPP的派生类负责 程序的主线程
- CWinApp类【应用程序类】:继承于CCmdTarget类,负责程序的初始化、运行及退出,在每一个MFC创建的应用程序中都包含CwinApp的派生类
- CDocument类【文档类】: 继承于CCmdTarget类,提供了文档的基本功能,主要用于代表程序中的数据
- CDocTemplate【文档模版类】:继承于CCmdTarget类,通过应用程序类的InitInstance函数来创建一或多个文档模版
窗口支持类
- 包含windows应用程序中的可视元素,窗口,对话框,控件等。窗口支持类的所有类几乎都是Cwnd类派生的
- CWnd类:继承于CCmdTarget类,提供了MFC中所有窗口类的基本功能,以及处理一些系统消息
- CFrameWnd【框架窗口类】:继承于CWnd类,封装对各种框架窗口的操作
- CView【视图窗口类】:继承于CWnd类,应用程序框架窗口中的子窗口,视图是用户与文档交互的媒介,用户可以在视图窗口内输入文本,绘图等
- CDialog【对话框类】:继承于CWnd类,在屏幕上显示的对话框的基类。CDialog类对象是对话框模版与一个CDialog派生类的组合,通过使用对话框编辑器创建对话框并存入资源之中,然后为对话框创建一个CDialog派生类
安装MFC组件
- 点击安装多个工具和功能
- 选择用于X86和x64的mfc支持
创建MFC程序
- 创建MFC应用程序
- 创建应用程序
- 创建成功
MFC创建弹窗按钮(认识和SDK的区别)
SDK:过程函数响应按钮消息,根据按钮ID确定功能函数
MFC:双击控件 编译器创建过程函数,编辑器会帮我们写以上代码
- MFC中绘制图形
- 编辑器自动创建相应函数,替代了写WM_COMMAND的相应过程
- 在MFC中 任何与句柄相关函数,都会被简化掉,比如上面的原函数内容是:MessageBox(句柄,内容,标题,响应内容)
画面演示:
总结
- 介绍了MFC框架内容,SDK和MFC的区别,MFC创建视图 弹窗效果