MFC-基础架构

前言

  • 各位师傅大家好,我是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创建视图 弹窗效果
相关推荐
洛克希德马丁5 分钟前
QLineEdit增加点击回显功能
c++·qt·ui
Darkwanderor19 分钟前
c++STL-list的使用和迭代器
c++·list
似水এ᭄往昔1 小时前
【数据结构】——栈和队列OJ
c语言·数据结构·c++
双叶8362 小时前
(C语言)超市管理系统(测试版)(指针)(数据结构)(二进制文件读写)
c语言·开发语言·数据结构·c++
格林威2 小时前
Baumer工业相机堡盟工业相机的工业视觉是否可以在室外可以做视觉检测项目
c++·人工智能·数码相机·计算机视觉·视觉检测
追烽少年x2 小时前
C++11异步编程 --- async
c++
虾球xz3 小时前
游戏引擎学习第277天:稀疏实体系统
c++·学习·游戏引擎
想睡hhh3 小时前
c++进阶——哈希表的实现
开发语言·数据结构·c++·散列表·哈希
行思理4 小时前
JIT+Opcache如何配置才能达到性能最优
c++·php·jit
南风与鱼4 小时前
STL详解 - 红黑树模拟实现map与set
c++·红黑树封装map和set