02MFC基础 - 图文(6)

2019-01-26 17:05

b) CWnd和CCmdTarget的派生类

c)(不是从CObject派生的)独立类 图2-8 MFC 9.0 功能包类库的层次结构图

★ 为Visual C++ 2008 Feature Pack中新增加的类。

26

Managers、Control Support和Helpper类都提供对单个控件或控件组的逻辑与数据支持。 管理器类的名称中含单词“Manager”,它们通常可组合和协调被单个控件另外处理的功能。

除了CWin32Window为托管类型外,其余的MFC类全为本地类型。

2.2.4 主要类

下面是一些主要的MFC类及其主要派生类的简单介绍:

1.根类CObject

MFC中大多数类都是从基类CObject(对象)派生的,只有一些简单数据结构(点、矩形、尺寸、串、时间)等不是由CObject派生的。

CObject类可提供下列基础服务:

? 序列化(Serialization,把对象存入文件/从文件中提取对象)支持。 ? 在运行时的类信息(识别对象的类型)。 ? 对象诊断信息输出。

? 与类组(collection classes)的兼容性。

2.应用程序构架类

MFC的应用程序构架类(Application Architecture Classes)包括可接收和响应消息对象类的基类CCmdTarget(命令目标)及其若干派生类CWinApp、CDocument和CWnd等。

? CWinApp(Windows应用程序)类是应用程序的入口主程序类(其中封装并隐藏

了WinMain函数),负责初始化和运行应用程序。

? CDocument(文档)类对应于用户文件,支持对文件的创建、装入和保存。 ? CWnd(窗口)类是所有窗口的基类。

3.窗口类CWnd

CWnd类是从CCmdTarget类派生的窗口基类,它封装了一个窗口句柄,定义了消息处理机制,并提供了操作窗口所必须的成员函数。

这里的窗口(window)为广义的概念,是指一种具有矩形可视界面的图形对象,包括基本窗口(无标题条和边框的一个矩形区域,可用于绘制图形和输出文本串等,如窗口的客

27

户区)、普通的(框架)窗口(有标题条和边框,如子窗口和对话框)、(主)框架窗口(含菜单条、工具条和状态条等,如程序的主窗口)、各种控件(如按钮、单选钮、复选框、文本编辑框、列表框、工具条)等。

CWnd派生的主要窗口类包括:

? CFrameWnd类(框架窗口)——框架窗口与基本窗口的差别是包含菜单、工具条

和状态条等组合控件,是SDI(Single-Document Interface,单文档界面)的主窗口,也是下面两个多文档界面框架窗口的基类。

? CMDIFrameWnd类(多文档界面框架窗口)——MDI (Multiple-Document

Interface,多文档界面)的主窗口,MDI可在其用户区打开多个文档子窗口。 ? CMDIChildWnd类(多文档界面子窗口)——MDI的文档子窗口,对应于一

个文档。

? CControlBar类(控制条)——是CToolBar(工具条)与CStatusBar(状态条)的

基类。

? CView类(视图)——负责窗口所对应文档的绘制。带滚动条的CScrollView类是

其主要的派生类,CEditView(文档编辑视图)类也是从其派生类派生的。 ? CDialog类(对话框)——是公用对话框(文件、颜色、字体、查找/替换等)和用

户自定义对话框的基类。

? 控件类(Control Classes)——都是从CWnd派生的,包括:CButton(按钮)、CStatic

(静态文本框)、CEdit(编辑框)、CListBox(列表框)、CComboBox(组合框)、CScrollBar(滚动条)等类。

4.图形绘制对象类CGdiObject

CGdiObject类(图形设备接口对象)提供大量GDI函数,可用于其各种派生类中,如:CPen(画笔)、CBrush(画刷)、CFont(字体)、CBitmap(位图)、CPalette(调色板)、CRng(绘图区域)。

5.设备上下文类CDC

DC(Device-Context,设备上下文/绘图环境/设备描述表)是由GDI管理的一种数据结构,直接从CObject派生的CDC是对DC的封装,保存着(显示/打印)设备的属性、绘图

28

的状态和多种绘图工具,并提供了多种简单图形的绘制函数。它还是若干具体DC类的基类,CDC的派生类有:

? CPaintDC类(绘制DC)——其构造函数调用BeginPaint函数,而析构函数调用

EndPaint函数,简化了CDC对象的生成与销毁过程。

? CClientDC(客户区DC)——仅在客户区绘图,其构造函数调用GetDC函数,而

析构函数调用ReleaseDC函数,也简化了CDC对象的生成与释放过程。 ? CWindowDC(窗口DC)——可在整个窗口范围(包括框架、菜单、工具条、状

态条和其他控件)内绘图。

不过,这些派生类在本书中很少涉及,我们使用的主要是基本的CDC类。

6.其他常用类

直接从CObject派生的常用类还有:CFile(文件)、CMenu(菜单)。

不是从CObject派生的独立类中常用的有:CArchive(存档)、CPoint(点)、CRect(矩形)、CSize(尺寸)、CString(串)、CTime(时间)等。

2.2.5 文档/视图结构

MFC不仅封装了大部分Windows API,而且还提供了实用的应用程序架构,其核心是文档/视图结构。文档/视图结构将应用程序中的用户数据(文档)与数据的显示(视图)分开,可分解程序的功能以降低编写和维护代码的复杂度,详见第12章“文档与视图”。

在MFC程序中,应用程序(application)对应于从MFC的CWinApp类派生的应用程序类C*App(其中的*为程序的项目名串,如Test,下同),文档(document)对应于从MFC的CDocument类派生的文档类C*Doc,视图(view)对应于从MFC的CView等类派生的视图类C*View,而视图类又对应于框架窗口的客户区,作为应用程序界面的主框架窗口则对应于从MFC的CFrameWnd类派生的CMainFrame类,参见图2-9和图2-10。

主框架窗口 CMainFrame 视图(客户区) C*View 应用程序 C*App 文档(用户数据) C*Doc 图2-9 MFC应用程序架构中的文档/视图结构

29

MFC类 CObject CCmdTarget CWinTread CWinApp CFrameWnd CWnd CView CDocTemplate CDocument CSingleDocTemplatCMultiDocTemplate CMDIFrameWnd CMDIChildWnd CScrollView CTestApp CMainFrame CChildFrame CTestView 你的应用程序类 CTestDoc 图2-10 传统MFC应用程序项目(Test)中的主要类及其基类

2.3 API编程简介

为了能更好地理解和掌握MFC编程的思路和方法,有必要对Windows API编程有一定的了解。本节先罗列一些API中常用的数据类型、变量和常量的定义,接着给出若干常用的函数与数据结构,然后编写一个简单的示例程序,最后说明开发API程序的具体步骤。

2.3.1 数据类型和常量

在Windows API中,为了跨平台(Win16/Win32/Win64)和使用方便,定义了若干数据类型和基本常量(windef.h):

1.基本类型的重定义(Win32 API)

typedef int BOOL; // 布尔(标准C++中的对应关键字为bool) typedef char CHAR; // 字符(8位有符号字符)

typedef unsigned char BYTE; // 字节(8位无符号字符) typedef short SHORT; // 短整数(16位有符号短整数) typedef unsigned short WORD; // 字(16位无符号短整数) typedef int INT; // 整数(32位有符号整数)

typedef unsigned int UINT; // 无符号整数(32位无符号整数)

30


02MFC基础 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:加气混凝土砌块墙施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: