MFC - 微软基础类库和框架

时间:2021-06-16 12:58:26

一 MFC的概念和作用
1 什么是MFC??
全称 Microsoft Foundation Class Library我们称之为微软基础类库
1)从硬盘的存在形式上来说 MFC就是一个库(静/动态库)
2)从原理上来说 MFC还是一个程序框架
2 为什么使用MFC??
基于框架编程提高工作效率,减少开发周期,节约开发成本。
二 几个重要的头文件
afx.h - 包含了MFC库中绝大部分类的声明
afxwin.h - 包含了afx.h和windows.h
afxext.h - 包含了扩展类的声明 例如:工具栏类,状态栏类....

附:*******************************************
以Afx....开头的函数,可以确定为MFC库中封装的全局函数
以::......开头的函数,可以确定为WIN32的API函数

三 MFC程序的分类
1 使用MFC库制作自己的控制台程序
多了一个全局对象 CWinApp theApp
入口函数不同于以往的入口
2 使用MFC库制作自己的静态库程序
3 使用MFC库制作自己的动态库程序
3.1 使用(静/动态)MFC库制作自己的规则动态库程序
3.2 使用MFC制作自己的扩展动态库
区别:规则动态库可以被所有程序调用
扩展动态库只能被支持MFC的程序调用
4 使用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 Dialog Boxes - 对话框窗口类,封装了关于各种对话框窗口的操作
10 Views - 视图窗口类,封装了各种视图窗口的操作
11 Controls - 控件窗口类,封装了各种控件窗口的相关操作
12 CDC及其子类 - 封装了各种绘图设备
13 CGdiObject及其子类 - 封装了关于各种绘图对象的操作。
14 Arrays / Lists / Maps - 封装了C++语法中相应数据结构的操作
15 非CObject类 - 封装了相应结构的操作。
例如: CPoint / CRect / CSize / CTime.....
五 第一个MFC程序
1 配置环境
1.1 将入口函数WinMain删除
1.2 将头文件更改为<afxwin.h>
1.3 Project-->Settings中设置为使用MFC库
2 代码的书写
2.1 从CFrameWnd类派生了一个自己的框架窗口类 CMyFrameWnd
2.2 从CWinApp类派生了一个自己的应用程序类CMyWinApp,并重写父类
的虚函数(InitInstance)
2.3 在InitInstance虚函数中,定义框架类对象并调用Create函数创建框架
窗口
3 程序的执行流程
3.1 构造全局对象theApp(爆破点)
1)将&theApp保存到 当前程序线程状态信息中。
2)将&theApp保存到 当前程序模块状态信息中。
3)AfxGetThread()/AfxGetApp() - 返回&theApp。
3.2 进入入口函数(WinMain)
1)利用AfxGetThread()/AfxGetApp()获取&theApp
2)利用theApp对象调用应用程序类的成员虚函数
InitApplication(初始化)
3)利用theApp对象调用应用程序类的成员虚函数
InitInstance(创建/显示窗口)
4)利用theApp对象调用应用程序类的成员虚函数Run(消息循环)
5)如果没有消息利用theApp对象调用应用程序类的成员虚函数
OnIdle(空闲处理)
6)程序退出时利用theApp对象调用应用程序类的成员虚函数
ExitInstance(善后处理)

MFC - 微软基础类库和框架

MFC - 微软基础类库和框架

易悦(深圳)科技有限公司

让快乐更简单

微信:EJoyYOJOY

微博:http://weibo.com/EJoyYOJOY

官网:http://www.ejoytec.com/

相关文章