MFC基础知识概述

合集下载

mfc基础

mfc基础

典型SDI的类的构成
框架窗口类:CFrameWnd类 SDI应用程序主框架窗口的基类,用来管理文档边框窗口、视窗口、工具条、 菜单、加速键等,协调半模式状态(如上下文的帮助(SHIFT+F1模式)和打 印预览) 。 文档类:CDocument类 用来管理数据,数据的变化、存取都是通过文档实现的。 视图类:CView类 视图和文档联系在一起,在文档和用户之间起中介作用,视图在屏幕上显 示文档的内容,并把用户输入转换成对文档的操作 。 文档模版类:CDocTemplate类 协调文档、视图和框架窗口的创建。应用程序通过文档模板类对象来管理上述
应用程序体系结构类
命令相关类:CCmdTarget类 该类是CObject类的子类,是MFC库中所有具有消息 映射属性的基类。 线程基类:CWinThread类 所有线程的基类,可直接使用,封装操作系统的线 程化功能。 窗口应用程序类:CWinApp类 每个应用程序有且只有一个应用程序对象,封装了 初始化、运行、终止的代码。
MFC基础(继承)
• MFC抽象出众多类的共同特性,设计出一些基 类作为实现其他类的基础。这些类中,最重 要的类是CObject和CCmdTarget。CObject是 MFC的根类,绝大多数MFC类是其派生的,包 括CCmdTarget。CObject 实现了一些重要的 特性,包括动态类信息、动态创建、对象序 列化、对程序调试的支持,等等。 •bject所拥有的特性。CCmdTarget通过封 装一些属性和方法,提供了消息处理的架构。 MFC中,任何可以处理消息的类都从 CCmdTarget派生。
设备描述表
• 当一个应用程序使用GDI函数时,必须 先装入特定的设备驱动程序,然后为 绘制窗口准备设备描述表,比如指定 线的宽度和颜色、刷子的样式和颜色、 字体、剪裁区域等等。不像其他Win32 结构,设备描述表不能被直接访问, 只能通过API函数来间接地操作。

MFC编程基础教程

MFC编程基础教程

MFC编程基础教程MFC(Microsoft Foundation Classes)是一套基于C++的应用程序框架,用于开发可视化的Windows应用程序。

MFC提供了丰富的工具和类库,使程序开发人员能够更加轻松地创建Windows应用程序。

一、MFC框架的介绍MFC是一种C++编程框架,用于开发Windows应用程序。

MFC提供了一系列的类和方法,用于处理窗口、消息处理、资源管理等常见的任务。

MFC框架的核心是一个称为CWinApp的类,它是应用程序的入口点。

二、MFC的基本概念1.窗口:MFC使用窗口来显示应用程序的用户界面。

窗口可以是主窗口、对话框、工具栏、菜单等。

2.消息处理函数:MFC使用消息机制来处理用户输入和系统事件。

消息处理函数是在收到特定的消息时执行的代码块。

3.控件:控件是用于用户交互的窗口元素,例如按钮、文本框、列表框等。

4.对象模型:MFC使用面向对象的概念来管理窗口和控件。

每个窗口或控件都是一个C++对象,有自己的属性和方法。

三、MFC应用程序的创建1.创建一个MFC应用程序的步骤:a. 新建项目:在Visual Studio中创建一个MFC应用程序项目。

c.编写代码:编写消息处理函数和其他代码,实现应用程序的功能。

d.编译和运行:编译项目并运行应用程序。

四、MFC消息处理1.应用程序的消息循环:MFC应用程序的消息循环负责接收和处理用户输入和系统事件。

2.消息映射表:消息映射表是一个用于将消息与消息处理函数关联的数据结构。

3.常见的消息类型:MFC提供了大量的消息类型,包括鼠标和键盘消息、窗口消息、菜单消息等。

五、MFC控件的使用1.控件的创建和操作:使用MFC提供的类和方法来创建和操作控件。

2.控件的属性设置:通过设置控件的属性来改变它的外观和行为。

3.控件事件的处理:通过处理控件的事件来响应用户的操作。

六、MFC对话框的使用2.对话框控件的操作:对话框中的控件可以像其他控件一样进行操作。

mfc 知识点总结

mfc 知识点总结

mfc 知识点总结MFC库的基本组成包括以下几个部分:1. CObject类:是所有MFC类的基类,提供了对象的基本功能,包括内存管理、类型信息、对象的打印和序列化等。

2. CWnd类:是窗口类的基类,封装了Windows窗口的创建、显示、消息处理等功能。

3. CFrameWnd类:是框架窗口类,派生自CWnd类,封装了应用程序的主窗口,提供了菜单、工具栏、状态栏等UI组件。

4. CDocument类和CView类:分别是文档类和视图类,用于管理应用程序中的文档和视图。

文档类负责文档的打开、保存、关闭等操作,视图类负责文档内容的显示和交互。

5. CWinApp类:是应用程序类的基类,封装了应用程序的初始化、消息循环、资源管理等功能。

MFC库提供了丰富的类和函数,用于处理Windows应用程序的各个方面,下面将对MFC的一些重要知识点进行总结。

1. 消息处理在MFC应用程序中,窗口的消息处理是至关重要的。

MFC提供了消息映射机制来进行消息处理。

通过DECLARE_MESSAGE_MAP宏和BEGIN_MESSAGE_MAP/END_MESSAGE_MAP 宏,在类中声明消息处理函数并将消息与处理函数进行映射。

例如:```cpp// 声明消息处理函数afx_msg void OnMouseMove(UINT nFlags, CPoint point);// 映射消息到处理函数BEGIN_MESSAGE_MAP(CMyWnd, CWnd)ON_WM_MOUSEMOVE()END_MESSAGE_MAP()```2. 对话框对话框是Windows应用程序中常用的界面元素,用于与用户进行交互。

MFC提供了CDialog类和CDialogEx类来封装对话框。

开发者可以使用资源编辑器创建对话框模板,然后通过类向导生成对话框类。

对话框类中可以处理控件的事件,并通过DoModal函数或Create函数来显示对话框。

第1章MFC概述 1

第1章MFC概述 1

第1章MFC概述 ................................................... 错误!未定义书签。

1.1 MFC是一个编程框架 ............................... 错误!未定义书签。

1.1.1 封装................................................. 错误!未定义书签。

1.1.2 继承................................................. 错误!未定义书签。

1.1.3 虚拟函数和动态约束..................... 错误!未定义书签。

1.1.4 MFC的宏观框架体系 .................... 错误!未定义书签。

1.2 MDI应用程序的构成................................ 错误!未定义书签。

1.2.1 构成应用程序的对象..................... 错误!未定义书签。

1.2.2 构成应用程序的对象之间的关系.错误!未定义书签。

1.2.3 构成应用程序的文件..................... 错误!未定义书签。

第2章MFC和Win32 ........................................... 错误!未定义书签。

2.1 MFC Object和Windows Object的关系... 错误!未定义书签。

2.2 Windows Object .......................................... 错误!未定义书签。

2.2.1 Windows的注册 ............................. 错误!未定义书签。

2.2.2 MFC窗口类CWnd ......................... 错误!未定义书签。

chapter2 MFC基础

chapter2 MFC基础

1. MFC类库简介
● MFC基础类库是按照C++类的结构层次进行组织的, 它封装了绝大多数Windows API函数、数据结构和宏, 并提供Windows应用程序常规任务的缺省处理代码。 ● MFC的基类提供了应用程序中的一般功能,由基类 产生的派生类实现各种具体的功能。 ●MFC类库将所有图形用户界面元素以类的方式封装 起来,其文档/视图模型较好的实现了数据与显示的分 离。 ●MFC 应用程序向导(AppWizzard)可以方便的为用户 自动生成应用程序框架 。
为菜单项或控制条按钮的允许或禁上提供支持 为Windows系统的POINT结构提供封装 定义一个静态数据结构以便存放类的属性细节(类型、 诊断等) 对Windows系统的SIZE结构提供封装 支持动态字符集
MFC消息种类
消息机制是 Windows应用程序的 核心,MFC中的消息可以分为: ● Windows消息 ●控件通知消息 ●定时消息 ●命令消息
Windows消息
● Windows消息通常指以WM开头的消息, 但WM_COMMAND除外。 ●键盘消息和鼠标消息都属于Windows消 息,Windows消息由窗口和视图进行处 理。 ● Windows消息通常带有若干个参数传递 给消息处理函数,这些参数为处理函数 正确地处理消息提供了充分的信息。
命令消息
●命令消息是来自于用户界面对象的 WM_COMMAND消息。 ●包括菜单、工具栏按钮和加速键都属于命 令消息等。即每当用户选择一个菜单项、单 击一个按钮或需要告诉操作系统应当执行什 么操作时,则发送一条WM_COMMAND命 令消息。 ● WM_COMMAND 消 息 的 消 息 映 射 宏 为 OnCommand()。所有命令消息都包含有一个 相同类型的参数,即该命令消息需要操作的 资源ID值,由ID值映射消息处理函数。

MFC概述

MFC概述

一、MFC1、何为MFC:MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C++类的集合,是一套面向对象的函数库,以类的方式提供给用户使用。

MFC库是开发Windows应用程序的C++接口。

提示:在MFC中,类的命名都以字母C开头。

若要查看某个类或函数的帮助,可以把当前光标放在该类或函数所在位置,然后按F1键,即可打开MSDN中相应帮助。

2、MFC默认创建的App类:对MFC程序来说,通过产生一个应用程序类的对象来唯一标识应用程序的实例,每个MFC程序有且仅有一个CWinApp类派生类(名字为”CMFC工程名App”)的实例化对象,也就是theApp全局对象,该对象表示了应用程序本身。

3、MFC中Afx前缀的函数:Afx前缀的函数代表应用程序框架(Application Framew)函数。

应用程序框架实际上是一套辅助我们生成应用程序的框架模型。

该模型把多个类进行了一个有机的集成,可以根据该模型提供的方案来设计我们自己的应用程序。

在MFC中,以Afx 为前缀的函数都是全局函数,可以在程序的任何地方调用它们。

提示:“::”开始的表示方法用于调用一个全局函数。

如:“::ShowWindow(m_hWnd,nCmdShow)”4、MFC的系统源文件的位置:MFC的系统源文件一般在VC安装目录下的\VC98\MFC\SRC 中,如:C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC。

提示:在当前工程文件中查找某个字符串,可用工具栏上的”Find in Files”工具按钮或Edit 菜单下的Find in Files命令;若在当前文件中查找某个字符串,可用Ctrl+F快捷键或Edit 菜单下的Find命令。

5、MFC中后缀名为Ex的函数都是扩展函数。

6、MFC创建的Frame和View类所代表的窗口:提示:视图类(View类)窗口始终覆盖在框架类(Frame类)窗口之上。

3、MFC概述

3、MFC概述

MFC全局函数
AfxWinInit: 被 WinMain(由 MFC 提供)呼叫的一个函 数,用做 MFC GUI程序呼叫的一部分 AfxBeginThread: 开始线程 AfxEndThread: 结束线程 AfxFormatString1:字符串格式化函数。 AfxFormatString2: 字符串格式化函数。
...
命令消息(WM_COMMAND):
对应规则:ON_COMMAND(<id>
例如:
, <memberFxn>)
ON_COMMAND(ID_ABOUT, OnAbout) ON_COMMAND(ID_FILE_NEW, OnFileNew) ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(ID_FILE_SAVE, OnFileSave)
三、MFC类概述
1.CObject类
除了少数杂类外,MFC库中的类都是从 CObject类派生的,称为诸类之母。 该类在afx.h 文件中定义,主要提供一些公用操作,如对象的 建立和删除、串行化支持、对象诊断输出、运行 信息等。

CCmdTarget类:实现了消息映射和命令消息绕行
(派生自CCmdTarget,才能处理WM_COMMAND消息)
2、MFC的主要作用

面向对象的windows编程接口 –繁琐的windows API编程 –面向对象的MFC编程 “站在巨人肩膀上”编程 –标准化的应用程序框架(Application Framework)

举例:一个简单的应用程序
创建过程 :


在Visual C++ 6.0的启动界面中,选择“File|New”, 在弹出的“New”对话框中单击“Projects”选项卡。 选择“MFC AppWizard(exe)”,在“Location”编辑 框中输入要建立的工程所在的目录 。 在右上方的“Project name”编辑框中输入工程名称 Eg2_1,单击OK按钮,弹出MFC AppWizard 向导对 话框。 在第一步中选择Single document,建立一个单文档界 面应用程序SDI。 取其默认值,直到第六步结束。

MFC基础知识概述

MFC基础知识概述

MFC基础知识概述MFC(Microsoft Foundation Classes)是微软公司开发的基于C++的类库,用于Windows操作系统下的图形用户界面(GUI)应用程序开发。

MFC是Windows的主要开发框架,提供了一系列的类和函数,可以用于创建窗口、控件、对话框、菜单等。

本文将对MFC的基础知识进行概述,包括MFC的结构、类层次结构、消息和事件处理、资源管理等内容。

一、MFC的结构MFC的结构主要由四个层次构成:应用程序对象、窗口对象、视图对象和文档对象。

应用程序对象继承自CWinApp类,用于创建和初始化应用程序的整个过程。

窗口对象继承自CWnd类,用于创建和管理窗口。

视图对象继承自CView类,用于显示和处理用户界面上的一部分,通常与窗口对象对应。

文档对象继承自CDocument类,用于管理应用程序中的数据。

二、MFC的类层次结构MFC提供了众多的类和函数,可以用于创建各种窗口、控件、对话框等。

类层次结构是指这些类的继承关系。

MFC的类层次结构非常庞大,以CObject类为基类,派生出众多的中间类,再由这些中间类派生出更具体的类。

例如,CObject派生出CWnd,CWnd派生出CFrameWnd,CFrameWnd派生出CView,CView派生出CScrollView和CFormView等。

通过这种类层次结构,可以方便地创建和管理各种类型的窗口和控件。

三、消息和事件处理在MFC中,消息是用于实现窗口和控件之间通信的机制。

当用户操作窗口或控件时,会产生消息,应用程序可以通过消息处理函数来处理这些消息。

MFC提供了一些宏,如DECLARE_MESSAGE_MAP和BEGIN_MESSAGE_MAP,可以简化消息处理函数的定义和注册。

消息处理函数需要通过ON_MESSAGE或ON_COMMAND宏来注册,以告诉MFC在何时何地调用该函数。

事件是消息的一个特殊形式,一般是指用户操作控件时触发的消息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2015-7-3
36
MFC AppWizard Step 1 对话框
建立的应用 程序的类型
所使用的 语言文字
2015-7-3 37

引入构造函数,构造一个CWnd对象 调用Create建立Windows窗口,并连到CWnd对象
(2)视类——CView类
表示框架窗口的用户区和显示文档数据并接收输入的用 户区; 其主要派生类:

CScrollView:具有滚动功能的视的基类 CFormView:其布局在对话资源中定义的滚动视 CEditView:具有文本编辑、查找、替换和滚动功能的视
2015-7-3 19
(3)菜单类——CMenu类
CObject类的子类,用于管理菜单。 一个Windows HMenu的封装,提供了菜单资源建 立、修改、跟踪及删除的成员函数。
(4)对话框类——CDialog类
从CWnd类中派生出来的特殊的窗口类。 包括通用对话框类CDialog以及支持文件选择、 颜色选择、字体选择、打印、替换文本的公共标准 对话框子类。
17
4.可视对象类
窗口类——CWnd类
视类——CView类
菜单类——CMenu类
对话框类——CDialog类
控件类
控件条类——CControlBar类
2015-7-3
18
(1)窗口类——CWnd类
Cwnd是CCmdTarget类的子类,提供了所有窗口类的基本 功能; 创建Windows窗口的两个步骤:
2015-7-3
28
6. OLE类
对象连接与嵌入类包括3组,共9个类。 普通类

–COleDocuemnt –COleItem –COleException

客户类
–COleClientDoc –COleClientItem

服务器类
–COleServer –COleTemplate –COleServerDoc –COleServerItem
2015-7-3
5
2.MFC及其特点
MFC是用来编写Windows应用程序的C++类集
–以层次结构组织 –封装了大部分API函数 –提供了图形环境下应用程序的框架 –提供了创建应用程序的组件
提供大量的基类便于不同的应用环境进行扩充
允许自定义和扩展应用程序中的类
较好的移植性,可移植于众多的平台 很好地保持了程序的向下兼容性
2015-7-3
26
(2)异常类——CException类
CException是所有异常情况的基类。 不能直接建立CException对象,只能建立派生类的 对象,用派生类来捕获指定的异常情况 Cexception的派生类有: CArchiveException类:归档异常 CFileException类:文件异常 CMemoryException类:内存(不够)异常 CNotSupportedException类:用未支持特征异常 CResourceException类:装载资源(失败)异常 CUseException类:用于停止用户起动的操作异常
2015-7-3 6
3.版本升级与功能的增强
MFC1.0&C/C++7.0提供应用程序中非图形部分的类
GUI功能的Windows相关类; MFC2.0&VC++1.0增添一些应用程序; MFC2.0&VC++1.5加了ODBC类,并支持OLE性能; MFC3.0&VC++2.0支持开发32位应用程序; MFC4.0包含了在Win95和NT中大多数新的公共控件 和DAO、MAPI; MFC4.21增强了对数据库应用程序的支持,利用 DAO类通过编程语言来访问、操纵和管理数据库, 对Internet也提供了强有力的支持。
2015-7-3 16
(3)文档/视类
文档对象由文档模板对象创建,管理应用程序的 数据; 视对象表示一个窗口的客户区,显示文档数据并 允许用户与之交互。
(4)线程基类:CWinThread类
所有线程的基类,可直接使用。 CWinApp类就是从CWinThread类中派生出来的。
2015-7-3
2015-7-3
29
7. ODBC数据库类
开放数据库连接层提供了一些类来支持ODBC特征, 即通过这些类可开发数据库应用程序来访问多个数 据库文件。 主要包括的类: CDataBase类:对一个数据源的连接 Crecordset类:选一组记录 CRecordView类:直接连接一记录集的格式视 CFieldExchange类:支持记录字段交换 CLongBinary类:封装一存储句柄 CDBException类:数据存取处理(失败)异常
2015-7-3 27
(3)模板收集类
可将多种对象存放到数组、列表和“ 映射”中。但这 些收集类是模板,它们的参数确定了存放在集合中的对 象类型。 主要的模板收集类有: CArry类:元素存入数组 CMap类:键映射到值 CList类:元素存入链表 CTypedPtrList类:将对象指针存入链表的类型 CTypedPtrArray类:将对象指针存入数组的类型 CTypedPtrMap类:将键指针映射到值指针的类型
面向对象与可视化
程序设计
主讲教师:
--Visual C++ 编程
唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心)
清 华 大 学
2001年10月
2015-7-3 1
第十章
MFC的基础知识
2015-7-3 2
内容提要


MFC概述 MFC类的组织结构及主要的类 MFC中全局函数与全局变量 应用程序向导及其应用
2015-7-3 9
1. MFC类的组织结构(续)
应用程序体系结构类; –应用程序和线程支持类 –命令相关类 –文档类 –文档模板类 –视类(体系结构) –框架窗口(体系结构) 窗口、对话框和控件类 –框架窗口类(窗口) –视类(窗口) –对话框类 –控件条类
2015-7-3 10
1. MFC类的组织结构(续)
绘图和打印类 –输出(设备相关)类 –绘图工具类 数组、列表和映射类 –数组类 –列表类 –映射类 文件和数据库类
–文件I/O类 –DAO类 –ODBC类
2015-7-3 11
1. MFC类的组织结构(续)
Internet和网络工作类
–LSAPI类 –Windows Socket类 –Win32 Internet类
调试和异常类
–调试支持类 –异常类
2015-7-3
12
1. MFC类的组织结构(续)
OLE(Object
Linking and Emloadding)类
–OLE容器类 –OLE服务器类 –OLE拖放和数据传输类 –OLE普通对话框类 –OLE动画类 –OLE动画类 –OLE控件类 –活动文档类 –其他文档类
2015-7-3 30
§10.3. MFC中全局函数与 全局变量
2015-7-3 31
MFC中全局函数和全局变量
以Afx开头的函数除数据库类函数和 DDX(Dialog Data Exchange)函数外,都 是全局函数。 以Afx为前缀的变量,都是全局变量。
2015-7-3
32
全局函数
函数名 AfxAbort AfxBeginThread AfxEndThread AfxFormatString AfxMessageBox AfxGetApp AfxGetInstanceHandle AfxRegisterWndClass 功能简介 无条件终止一个应用程序 创建一个新线程并执行它 终止当前正在执行的线程 格式化字符串 显示一个 Windows 消息框 返回当前应用程序对象的指针 返回标识当前应用程序对象的句柄 登记用于创建 Windows 窗口的窗口类
2015-7-3 20
(5)控件类
包括若干主要类:
按钮 静态文本 滚动条 编辑框 …...,
为Windows应用程序提供了各种输入和显示界面。 用于建立静态文本、命令按钮、位图按钮、列表 框、组合框、滚动条、编辑框等。
2015-7-3
21
(6)控件条类——CControlBar类
2015-7-3
33
§10.4
应用程序向导 及其应用
2015-7-3
34
向导及其应用
应用程序向导提供了一个基于MFC的应用 程序框架; 程序员可在此框架基础上添加实现特定 功能的代码。
2015-7-3
35
File-->New-->MFC AppWizard
Project name
MFC应用 程序向导
2015-7-3
14
3.应用程序体系结构类
用于构造应用程序框架,提供多数应用程序
公用的功能. 编写程序的任务是填充框架,添加应用程序 专用的功能; 其中较重要类:
–命令相关类; –窗口应用程序类; –文档/视类; –线程基类; – …...
2015-7-3 15
(1)命令相关类:CCmdTarget类
2015-7-3
3
§10.1.
MFC概述
2015-7-3
4
1.VC++编程的实现方法
利用Windows
API函数编程,用户需要编写 大量的代码,工作量大。 利用MFC和向导(Wizard)实现可视化编程,其 步骤如下:
–用Class Wizard生成应用程序的基本框架; –用Class Wizard建立类、消息处理、数据处理 函数或定义控件的属性、事件和方法: –把各应用程序所要求的功能添加到类中。
相关文档
最新文档