目录
一、MFC概述
MFC :全称是Microsoft Foundation Class Library,我们称微软基础类库。它封装了windows应用程序的各种API以及相关机制的C++类库。
基于应用程序框架之上,使用提供的类库快速开发,提高项目的开发效率,减少开发周期和成本。
常用的头文件:
- afx.h-将各种MFC头文件包含在内
- afxwin.h-包含了各种MFC窗口类。包含了afx.h和windows.h
- afxext.h-提供了扩展窗口类的支持,例如工具栏,状态栏等。
二、MFC程序分类
- 控制台程序,能使用MFC框架
- 窗口程序,能使用MFC框架
- 静态库,能使用MFC框架
- 动态库,能使用MFC框架
MFC控制台程序
创建Windows桌面程序向导
选择MFC标头
和win32的控制台程序的差别
(1) main函数不同于普通的控制台程序;
(2) CWinApp theApp;多了一个全局对象
经验之谈∶
- 以Afx开头可以确定为MFC库中的全局函数。
- 以::开头可以确定为win32的API函数。
- 以XXX::开头可以确定是类的成员函数
MFC库程序
使用MFC制作静态库
就是制作一个静态库,里面的函数是利用MFC实现的
创建Windows桌面程序向导
MFC规则动态库
使用MFC 动态连接库创建项目
可以在这里随时修改
- 制作一个动态连接库,使用静态的MFC
- 制作一个动态连接库,使用动态的MFC
可以修改
MFC扩展库
选择第三个即可
规则库可以被各种应用程序调用,而扩展库只能被MFC调用。
扩展库一般是对MFC库某些类的功能拓展,比如继承某个类扩展功能。规则库相是直接调用MFC库实现功能
MFC窗口程序
创建一个MFC应用
有多个MFC应用类型可供选择
MFC文档类型使用场景:
-
基于对话框的 MFC 项目: 基于对话框的 MFC 项目是一种常见的 MFC 应用程序类型,它的主要界面是一个对话框窗口。对话框窗口通常包含了控件(如按钮、编辑框、列表框等)和菜单等元素,用于与用户交互。该类型的 MFC 项目适合处理简单的界面和交互逻辑。基于对话框的 MFC 项目适合处理简单的界面和交互逻辑;
-
基于单个文档的 MFC 项目: 基于单个文档的 MFC 项目是一种支持处理单个文档的应用程序类型,它包含了一个文档视图框架和一个文档类。该类型的 MFC 项目适合处理只有一个文档的应用场景,如文本编辑器等。基于单个文档的 MFC 项目适合处理只有一个文档的应用场景;
-
基于多个文档的 MFC 项目: 基于多个文档的 MFC 项目是一种支持处理多个文档的应用程序类型,它包含了一个文档视图框架和多个文档类。该类型的 MFC 项目适合处理多个文档之间相互关联的应用场景,如电子表格、绘图工具等。而基于多个文档的 MFC 项目适合处理多个文档之间相互关联的复杂应用场景。
单文档视图架构程序,下面的这些类负责程序架构
- CWinApp-应用程序类,负责管理应用程序的流程
- CFrameWnd-框架窗口类,负责管理框架窗口
- CView-视图窗口类,负责显示数据
- CDocument-文档类,负责管理数据
红色区域就是框架窗口,黄色区域是视图窗口,是覆盖在框架窗口的客户区之上的
多文档视图架构程序,下面的这些类负责程序架构
- CWinApp-应用程序类
- CMDIFrameWnd-多文档主框架窗口类
- CMDIChildWnd-多文档子框架窗口类
- CView-视图窗口类,显示数据
- CDocument-文档类,管理数据
红色区域:主框架窗口;黄色区域:子框架窗口;视图窗口:子框架窗口中间的白色部分。
对话框应用程序,下面的这些类负责程序架构
- CWinApp-应用程序类
- CDialog-对话框窗口类
三、MFC库中相关类简介
CObject类:
- MFC类库中绝大部分类的父类,提供了MFC类库中一些基本的机制。
- 对运行时类信息的支持
- 对动态创建的支持
- 对序列化的支持
CWinApp类应用程序类,封装了应用程序、线程等信息。
CDocument类,文档类,管理数据
Frame Windows,框架窗口类,封装了窗口程序组成的各种瞭框架窗口
CSplitterWnd-用来完成拆分窗口的类
Control Bars-控件条类
Dialog Boxes -对话框类,封装了各种对话框,通用的对话框
Views-视图类,封装了各种显示窗口
Controls-控件类,封装了各种常用的控件
Exceptions-异常处理类,封装了MFC中常用的各种异常
File -文件类,各种文件的I/O操作等
绘图类,包括CDC类和CGdiObject类。
数据集合类,CArray/Clist/CMap,封装了相应的数据结构的管理
非CObject类的子类,提供了各种数据结构相关的管理,CPoint ,CTime , CString行