第 7章 Visual C++程序设计
第 7章 Visual C++程序设计
?Windows的编程模式
?基于 MFC的 Visual C++编程模式
Windows的编程模式
?Windows操作系统的特点
?Windows应用程序设计的基本概念
?Windows应用程序的结构框架
?Windows应用程序的工作模式
?Windows应用程序的开发流程
Windows操作系统的特点
?Windows是 Microsoft公司开发的一种基于窗
口的操作系统,主要用于个人计算机系统
?其中最重要的是以下,
?1,友好的用户界面
?2,高性能的抢占式多任务操作
?3,动态链接库
?4,有效的应用程序设计接口( API)
Win32 API
Windows 应用程序 Windows 应用程序

Windows 应用程序
Win32 子系统
系统服务
硬件层
用户态
核心态
Win32 API
? 主要由 Win32子系统的三个动态链接库实现,
· USER32.DLL:负责处理用户接口,包括键盘和
鼠标输入、窗口和菜单管理等
· GDI32.DLL:负责在图形设备(包括显示器和打
印机)上执行绘图操作
· KERNEL32.DLL:操作系统核心功能服务,包括
进程和线程控制、内存管理和文件访问等
Windows应用程序设计的基本概念
?Windows应用程序是面向对象的。它的这些
面向对象的特征通过其特有程序设计模式表
现出来。这种特有的程序设计模式主要包含
如下三方面的内容,
· 窗口为核心的用户界面;
· 以事件驱动为动力的程序运行机制;
· 程序代码与用户界面分别处理。
窗口
? 窗口是由应用程序创建的、系统显示器上的一个用于接收用户输入和显 示输出的矩形区域
? 进一步说,窗口涉及如下一些概念,
· 应用程序只能通过窗口访问系统显示器,并且与其他应用程序共享显示

· 同一时间只有一个窗口是活动的;
· Windows允许应用程序创建多个窗口,但每个应用程序至少要创建一个
窗口 ——主窗口作为用户与应用程序的主要接口;其他的窗口用于完成
相关任务,如对话框、消息框等;
· 一旦创建了一个窗口,Windows就提供该窗口所对应的各种交互信息,
并负责为应用程序管理屏幕,控制窗口的位置和显示,确保不会有两个 应用程序的窗口冲突。
· 一个应用程序的窗口一般由标题栏、菜单栏、工具栏、边框、客户区、
滚动条等部件组成
面向对象
?Windows程序设计是面向对象的,凡是与程
序有关的实体,都称为对象。
?为了对这众多的对象进行管理,Windows在
内部为每个程序的对象要建立一个索引表。
索引表的索引,就称为“句柄”( Handle)。
句柄的值是一个数字
公共 Windows对象及其句柄
对 象 句 柄 对 象 句 柄
快捷键表 HACCEL
位图 HBITMAP
画刷 HBRUSH
光标 HCURSOR
设备描述表 HDC
文件 HFILE
字体 HFONT
图 标 HICON
菜单 HMENU
调色板 HPALETTE
画笔 HPEN
区域 HRGN
窗口 HWND
事件驱动
?一般地说,程序执行的进程是由某种机制驱
动进行的。目前可以把程序执行进程的驱动
分为两种类型,
?1)过程驱动
?2)事件驱动
过程驱动
?采用过程驱动的程序一般由一系列的函数或
过程组成。这些函数或过程具有预定的初始
化、中间处理和输出序列,以此控制程序的
基本流程。由于这些序列是预定的,因此它
具有面向系统性和主动性,在程序的执行过
程中,用户的干预空间较小
事件驱动
?采用事件驱动的程序不给程序预先规定一个
执行顺序,程序一旦启动,就处于等待状态,
等待某种事件的发生;只要有用户输入事件
发生,它就立刻接收事件并做出响应;处理
完毕又立刻返回等待下一个事件的发生。这
种循环等待方式,具有面向用户性和被动性,
可以给用户提供较大的干预空间,让用户以
各种合理的和可能的顺序来安排程序的流程,
特别适合交互性强的程序
消息与消息循环
? Windows是一个多任务的操作系统环境。在这个平
台上,多个程序所以能有秩序地交织运行,就在于
它采用了“消息传送”( Message Passing)机制
? 消息处理是 Windows应用程序的核心。所有的
Windows应用程序都是消息驱动的。在 Windows环
境下,所有的外部输入都被系统先拦截,转换成消
息之后,再传送给程序中的目标。目标系统再根据
消息的具体内容进行相应的处理
Windows消息机制
应用程序 1
消息循环
WinMain()
窗口 函数 1 窗口 函数 m …
应用程序队列 1
应用程序 n
消息循环
WinMain()
窗口 函数 1 窗口 函数 m …
应用程序队列 n


系统消息队 列
Windows
事件发生 检索消 息
发送消息
检索消 息
发送消息
Windows程序和消息的基本流程
初始化
开始执行
当前消息是,退出”消息
从消息队列 取得一个消息
终止执行

否 是否当前程序要处理的消息
处理消息 默认处理


消息分类
?在 Windows中,操作系统的各部分之间以及
应用程序之间,通过消息进行通信
?据统计大约有近千种消息,但从分布来说,
可以分为系统消息和应用程序消息两种类型。
其中系统消息可分为如下三类
a)标准 Windows消息
b)控件消息
c)命令消息
消息的数据结构
?消息定义成如下的一个结构体,
a)目标窗口句柄
b)消息标识
c)参数 wParam和 lParam
Windows应用程序的结构框架
?Windows应用程序的基本结构具有固定性,
入口点函数 WinMain
窗口函数
?构成了 Windows应用程序的基本框架
WinMain函数
?WinMain函数是 Windows应用程序的入口点
?WinMain函数用于完成一些特别的功能,其
中最主要的是创建该应用程序的主窗口,为
此,多数程序需要执行如下 4部分操作,
1)注册窗口类
2)创建窗口
3)显示窗口
4)建立消息循环
WinMain的例子
# include <windows.h>
LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM); // 窗口函数说明
int WINAPI WinMain
(
HINSTANCE hInstance,// 应用程序当前实例句柄
HINSTANCE hPrevInst,// 应用程序其他实例句柄
LPSTR lpszCmdLine,// 指向程序命令行参数的指针
int nCmdShow
// 应用程序执行时窗口显示方式的标识
)
{
HWND hwnd;
MSG Msg; // 窗口类标题
WNDCLASS wndclass;
char lpszClassName[ ] =,示例窗口” ; // 窗口类名
char lpszTitle[ ] =,窗口示例程序” ; // 窗口类标题
//------------------- 注册窗口类 ----------------------//
wndclass.style = 0; // 窗口类型为缺省类型
wndclass.lpfnWndProc = WndProc; // 窗口处理函数为 WndProc
wndclass.cbClsExtra = 0; // 窗口类无扩展
wndclass.cbWndExtra = 0; // 窗口实例无扩展
wndclass.hInstance = hInstance; // 当前实例句柄
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); // 使用缺省图标
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); // 窗口采用箭头光标
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
// 窗口背景白色
wndclass,lpszMenuName = NULL; // 窗口中无菜单
wndclass,lpszClassName = lpszClassName; // 窗口类名为“窗口示例”
if(!RegisterClass(& wndclass)) { // 若注册失败则发出警告声音
MessageBeep(0);
return FALSE;
}
// ----------------------创建窗口 -----------------------//
hwnd =CreateWindow(
lpszClassName,// 窗口类名
lpszTitle,// 窗口实例标题名
WS_OVERLAPPEDWINDOW,// 窗口的风格
CW_USEDEFAULT,CW_USEDEFAULT,// 窗口左上角坐标为缺省值
CW_USEDEFAULT,CW_USEDEFAULT,// 窗口的高和宽为缺省值
NULL,// 此窗口无父窗口
NULL,// 此窗口无主菜单
hIstance,// 应用程序的当前例句
NULL); // 不使用该值
// ----------------------- 显示窗口 ----------------------//
ShowWindow( hwnd,nCmdShow ); // 显示窗口
UpdateWindow( hwnd ); // 绘制用户区
// ---------------------- 建立消息循环 ---------------------//
while( GetMessage( & Msg,NULL,0,0 )) { // 消息循环
TranslateMessage( & Msg);
DispatchMessage( & Msg);
}
return Msg.wParam; // 程序终止时将信息返回系统
}
窗口函数
?每个窗口必须有一个窗口函数(或称窗口过
程)。窗口函数主要执行两方面的操作,
1)从 Windows接收消息:这些消息或是由
WinMain中通过消息循环发送的输入消息,
或是直接来自 Windows系统的窗口管理消息
2)检查每一条消息,进行相应的处理:窗
口函数由一系列的 case语句组成,用于根据
消息的类型执行相应的程序段
窗口函数示例
LRESULT CALLBACK WndProc( HWND hwnd,UINT
message,WPARAM wParam,LPARAM lparam)
{
switch ( message )
{
case WM_DESTROY,
PostQuitMessage(0); // 调用该函数发出 WM_QUIT消息
default,// 缺省消息处理函数
return DefWindowProc(hwnd,message,wParam,lparam);
}
return (0);
}
Windows应用程序的工作模式
应用程序 1
消息循环
WinMain()
窗口 函数 1 窗口 函数
m

应用程序队列 1

系统消息队 列
Windows
用户键入 x
x
Windows应用程序的过程
? 1 用户利用中断将键入字符 x送入系统队列
? 2 系统将字符 x送入应用程序队列
? 3 应用程序检索应用程序队列
? 4 消息循环接收字符 x
? 5 Windows从应用程序得到译成 ANSI字符消息的
WM_CHAR
? 6 Windows将 WM_CHAR与原键盘消息发给窗口函

? 7 窗口函数发出请求
? 8 Windows将字符 x输出到对应的窗口
Windows应用程序的开发流程
.LIB
.BMP
对话框 编辑器
资 源 编译器
文 本 编辑器
.H
图 象 编辑器 字 体 编辑器
.ICO,CUR,FON
.CPP
.DLG
.RC
C++ 编译器
.OBJ,RES,DEF
链接器
.EXE
源代码编辑 用户界面资源编辑






注 释
.H 头文件
.CPP C++源代码文件
.OBJ 目标文件
.DLG 对话框文件 (二进
制 )
.BMP 位图文件 (二进制 )
.ICO 图标文件 (二进制 )
.CUR 光标文件 (二进制 )
.FON 字体文件 (二进制 )
.RC 资源描述文件
.RES 资源文件 (二进制 )
.LIB 库文件 (二进制 )
.DEF 模块定义文件
.EXE 可执行文件 (二进
制 )
基于 MFC的 Visual C++编程模式
?集成开发环境 Developer Studio
?用 MFC AppWizard生成一个简单程序的过程
?Visual C++应用程序结构
?MFC应用程序的控制
?MFC类库层次结构
基于 MFC的 Visual C++编程模式
? Visual C++是在 Windows 操作系统支持下的一种 C++程序开发平台。它
的优势是它提供了一个集成有编辑,编译,连接、调试等程序开发工具,
更重要的是提供了全方位的自动编程服务工具 ——编程向导 Wizard的集
成开发环境 ——Developer Studio
? 它是基于 MFC的。类库是一个可以在应用程序中使用的相互关联的 C++
类的集合。 MFC不仅包含了 C++的基类,还包含了 WinMain函数以及其
他一些支持标准菜单、常见消息处理、窗口滚动等功能的元素和 API函
数,功能涉及到整个 Windows操作系统
? MFC类库不仅是预定义的类的集合,而且是一个应用框架。它定义了应
用程序的结构,这个结构把应用程序与 Windows的接口部分和应用程序
的其他部分结合成一个整体,有许多通用代码是由系统自动生成的,不 须程序员自己编写,只要把非通用代码填入指定的位置即可
集成开发环境 Developer Studio
?Developer Studio的特点
Developer Studio的特点
? 程序的开发过程,是由应用程序向导引导完成的,
便于学习掌握
? 每个应用程序都有大致相同的结构,这些相同的部
分用同样的代码描述
? 提供了一套功能强大的基础类库,即微软基础类库MFC
? 引入了文档 -视图结构
? 在 MFC中用指针来标识对象
? 提供强有力的资源管理功能
? 以项目作为应用程序开发的基本单位
AppWizard可以建立三种类型的应用
程序结构
?MDI:多文档界面,允许同时打开多个文档,
多用于像 Word,Excel那样的规模比较大的应
用程序
?SDI:单文档界面,一次只允许打开一个文档
?Dialog based
?Dialog based:基于对话的应用程序,不支
持文档 /视图结构,仅显示一个简单的对话框,
主要用于编写小程序
多文档与单文档界面应用程序的外观
Developer Studio界面
状态态
项目窗口
信息窗口
用户操
作窗口
文件页、
资源页、
类页间切换
Developer Studio
? 包含了标题、菜单、工具条、状态条等部件。此外,还配置
了项目工作窗口(项目工作区)、用户操作窗口、信息窗口
等 3个窗口,
? ① 项目工作窗口( Project work space):包含正在开发的
项目的信息,能够分页显示当前项目中的类( Class)、文
件( Files)、资源( Resource)等构造情况
? ② 用户操作窗口:对在项目工作窗口中选中的内容进行源程
序或资源的编辑等操作
? ③ 信息窗口:进行编译及链接操作时,给出编译、链接情况
的信息(如,构成项目的每个程序名,错误信息等)
用 MFC AppWizard生成一个简单程
序的过程
?使用 MFC AppWizard [exe] 制作程序框架
?在 OnDraw(CDC* pDC)函数中增加代码
制作程序框架的操作步骤
?准备:确定项目名和项目目录
?创建程序框架
?制作可执行文件
?运行程序
确定项目名和存储目录
选择 projects项
输入项目名
输入目录名
选择平台
选择 应用 向导
创建框架程序的步骤
选择文档界面
选择资源语言 界面样本
进入下一步
创建框架程序的步骤
?在菜单条中选择 Projects
?在 Projects菜单窗口中选择 MFC向导
?在 Location 对话框中输入存放项目的工作目
录名
?在 Project Name对话框中输入项目名,项目
名就是最终的应用程序名
? 从 Platforms列表框中选择可用的目标平台
?单击 OK按钮
创建程序框架
?完成 MFC向导进行的操作
?选择数据库支持
?选择复合文档支持
?附加功能设置
?选择是否在由向导及类向导生成的源代码中
附加注释和链接库的类型
?确定由 AppWizard生成的类名和文件名
创建框架的步骤之 4,5
创建框架的步骤之 6
框架程序的组成信息
制作可执行文件
? 在项目工作窗口的下端单击,File..”( FilesView) 按钮
? 点击 OutText Files,便展示出从,OutText Files”生长出的
一个帮助文件 ReadMe.txt和三个文件夹,
· Source Files(源程序文件夹)
· Header Files(头文件文件夹)
· Resource Files(资源文件文件夹)
? 在 Developer Studio 窗口中单击菜单项的 Build打开 Build菜
单,再单击 Build OutText.exe (或者直接按 F7键 ),
Developer Studio便开始编译和链接,同时在输出窗口中显
示出编译和链接的信息
制作可执行文件
制作可执行文件(包含编译和链接) 执行文件程序) 展示 OutText Files文件夹























单击,File..按钮 编译和链接信息
运行程序
?运行程序的方法有 3种,
· 在 Developer Studio窗口中打开 Build菜单,
单击 Execute OutText.exe
· 在 Developer Studio集成环境中按 Ctrl + F5键
· 不在 Developer Studio集成环境中时,可在资
源管理器中进入 OutText文件夹,再进入
Debug子文件夹,双击图标表示的文件
框架程序的执行结果



标题栏 菜单条 工具条
执行New
操作
打开的子
窗口
执行Open
操作
打开的对
话框
OnDraw(CDC* pDC)函数中增加代码
? 在项目工作区依次执行:单击 FilesView 按钮 → 双
击 OutTextfiles 选择项 → 双击 Source Files→ 双击
OutTextView.cpp,在客户编辑窗口中就会显示出
OutTextView.cpp的源文件代码
? 插入上面所示的一行代码后,将项目 OutText 重新
编译、链接 (单击 Build打开 Build菜单,再单击
Build Steleton.exe 或者直接按 F7键 )就生成了可
执行文件 OutText.EXE
文本输出程序的结果
Visual C++应用程序结构
?Visual C++应用程序的逻辑构件 ——对象
?Visual C++应用程序的存储结构 ——文件
应用程序的逻辑构件 ——对象
?面向对象的程序由对象组成。程序设计的任
务是根据给定的问题对涉及到的对象进行分
类,接下来的任务就是定义各对象类,并书
写实现这些类的代码以及实现对象间消息传
递的代码
Visual C++主要的组成部分
? 文档对象:用于存放应用程序的数据和文件
? 视图对象:管理视图窗口,显示用户数据,接收用
户对数据的鼠标、键盘操作,并传送给文档类对象。
文档类对象必须通过视图类对象才能实现与用户的
交互
? 应用程序对象:控制应用程序的所有对象,包括文
档、视图和边框窗口,并完成应用程序的初始化工
作和程序退出的清除工作
? 主窗口对象:主要用于管理主程序的窗口,显示标
题栏、工具栏、状态栏,处理窗口操作消息
应用程序类构成
?一个对话框应用程序由一个应用程序类和一
个对话框类构成
?一个 SDI应用程序由应用程序类、框架类、文
档类和视图类构成
?一个 MDI应用程序由应用程序类、主框架类、
子框架类、文档类和视图类构成
名为 Xxxx的 MDI应用程序为例
?应用程序类(由 CWinApp类派生)
?文档类(由 CDocument类派生)
?视图类(由 CView类派生)
?主框架类(由 CMDIFrameWnd类派生)
?子框架类(由 CMDIChildWnd类派生)
应用程序类
? 缺省的名字,
· 类名,CXxxxApp
· 类的头文件名,Xxxx.h
· 类的实现文件名,Xxxx.cpp
? 功能,
· 控制应用程序的所有对象
· 应用程序的初始化
· 创建主窗口
· 处理消息循环,从 Windows操作系统中获取信息分发给程序窗口
· 退出应用程序
· 关闭应用
文档类
缺省的名字,
类名,CXxxxDoc
类的头文件(定义该类)名,XxxxDoc.h
类的实现文件名,XxxxDoc.cpp
?功能:存放程序数据并实现文件保存和装载
视图类
?缺省的名字,
类名,CXxxxView
类的头文件名,XxxxView.h
类的实现文件名,XxxxView.cpp
?功能:指定用户与文档间的交互形式
主框架类
?缺省的名字,
· 类名,CMainFrame
· 类的头文件名,MainFrm.h
· 类的实现文件名,MainFrm.cpp
?功能:管理应用程序窗口,显示标题栏、菜
单栏、工具栏、状态栏、控制菜单和控制按
钮,包容子框架窗口
子框架类
?缺省的名字,
· 类名,CChildFrame
· 类的头文件名,ChildFrm.h
· 类的实现文件名,ChildFrm.cpp
?功能:管理应用程序窗口,无自己的菜单栏、
工具栏、状态栏,但可与主框架类共享
应用程序的存储结构 ——文件
? 从物理上来看,Visual C++程序是由一些文件组成

? 4个主要组成部分各自由不同的文件描述。一般说
来,每一个主要的类都由两类文件支持,
? 一类的后缀为,h,主要用于该类的定义(派生关系
以及组成成员)等
? 一类的后缀为,cpp,主要用于描述该类的实现(写
成员函数的代码)等
AppWizard生成一系列文件
?自述文件 ReadMe.txt
?项目文件( PRJNAME.dsp, PRJNAME.clw )
?应用程序源文件和头文件
?资源文件
?预定义的文件,STDAFX.h和 STDAFX.cpp
?上下文敏感的帮助文件
?按可选项增加的 AppWizard文件
应用程序源文件和头文件
? PRJNAME.h:应用程序的应用程序类的头文件
? PRJNAME.cpp:应用程序的应用程序类的实现文件,包含应用类的具
体实现代码和消息映射
? MainFrame.h:应用程序框架窗口类的头文件
? MainFrame.cpp:应用程序框架窗口类的实现文件
? ChildFrm.h:应用程序子框架窗口类的头文件
? ChildFrm.cpp:应用程序子框架窗口类的实现文件
? PRJNADoc.h:应用程序文档类的头文件
? PRJNADoc.cpp:应用程序文档类的实现文件,实现文档的初始化、保
存、装入、调试诊断
? PRJNAView.h:应用程序视图类的头文件
? PRJNAView.cpp:应用程序视图的实现文件,实现文档数据的显示、打

资源文件
? PRJNAME.rc:项目的资源文件
? Resource.h:资源头文件,包含了标准 MFC的资
源 ——标准的菜单、加速键和字符串表
? res\ PRJNAME.ico:应用程序的图标文件
? res\ PRJNDoc.ico,MDI应用程序的子窗口图标文

? res\TOOLBAR.hmp:位图文件,指定了支持工具
条时,用于创建级联图象
? res\ PRJNAME.rc2,AppStudio尚未建立和编辑的
资源的资源文件
MFC应用程序的控制
?文档模板
?应用程序的控制
文档模板
? MFC用文档模板( Document Template)类的对象
来存储程序文档、视图和框架窗口有关的信息,提
供 MFC用来将文档、视图和框架结合在一起的框架
结构,以协调框架窗口、文档对象和视图对象之间
的关系
? MFC类库提供有两种文档模板,
· CSingleDocTemplate:用于 SDI应用程序,每次
只能创建和管理一个文档。
· CMultiDocTemplate:用于 MDI应用程序,每次可
以创建和管理多个文档。
应用程序的控制
应用程序启 动 //创建全局对象 CxxxApp
theApp;
CXxxApp() {}
InitInstance()
{创建并注册程序窗口,
文档模板、文档,
视图等 }
CWinApp() {
// 建立全局指针,用于调
用 // WinApp成员函数
}
Run() { 消息循环 }
ExitIstance()
{终止应用程序的一副本 }
初始化应用程序
应用程序运行
应用程序结束
///入口函数
AfxWinMain()
{
调 用
调 用
调 用 }
应用程序处理内 容 Xxx.cpp
Windows系统
CXxxApp类 基类 CWinApp类
说明
?初始化,AfxWinMain()调用 CXxxApp类对象
的成员函数 InitInstance(),初始化应用程序,
构造文档模板,产生最初的文档、视图和主
框架窗口等
?运行应用程序,AfxWinMain()调用 CXxxApp
类对象的成员函数 Run(),处理消息循环
?结束应用程序,AfxWinMain()调用 CXxxApp
类对象的成员函数 ExitInstance()
一个简单的 MFC程序的执行流程
int AFXAPI AfxWinMain
(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
ASSERT(hPrevInstance == NULL);
int nReturnCode = -1;
CWinThread* pThread = AfxGetThread();
CWinApp* pApp = AfxGetApp();
// AFX internal initialization
if (!AfxWinInit(hInstance,hPrevInstance,lpCmdLine,nCmdShow))
goto InitFailure;
// App global initializations (rare)
if (pApp != NULL && !pApp->InitApplication())
goto InitFailure;
// Perform specific initializations
if (!pThread->InitInstance()) //注 1
{
if (pThread->m_pMainWnd != NULL)
{
TRACE0("Warning,Destroying non-NULL m_pMainWnd\n");
pThread->m_pMainWnd->DestroyWindow();
}
nReturnCode = pThread->ExitInstance();
goto InitFailure;
}
nReturnCode = pThread-> Run(); //注 2
InitFailure,
#ifdef _DEBUG
// Check for missing AfxLockTempMap calls
if (AfxGetModuleThreadState()->m_nTempMapLock != 0)
{
TRACE1("Warning,Temp map lock count non-zero (%ld).\n",
AfxGetModuleThreadState()->m_nTempMapLock);
}
AfxLockTempMaps();
AfxUnlockTempMaps(-1);
#endif
AfxWinTerm();
return nReturnCode;
}
说明
?AfxWinMain是 MFC程序的入口,但是我们看
到这个函数并没有出现在 AppWizard生成的
代码中间
?AfxWinMain函数是系统提供的、不由程序员
修改的、协同应用程序类、框架类、文档类、
视图等类一起完成程序任务的系统代码。这
些系统代码和程序员可以修改的应用程序类、
框架类、文档类、视图等类一起构成程序
MFC类库层次结构
CObject
CCmdTarget
CException
CFile CWnd
CWinThread CWinApp
CDocument
CDocTemplate
CGdiObject
CDC
CFrameWnd
CSplitterWnd
CControlWnd
CPropertyWnd
CView
CDialog
CMDlFrameWnd
CMDlChildWnd
CScrollView
CFormView CArray
CList
CMap
MFC提供的类
? 应用程序框架结构类,包括:应用程序和线程支持类、命令流程类、文 档类、视图(体系结构)类、框架窗口类、文档摸板类等
? 窗口类,包括:框架窗口类、视图(窗口)类、对话框类、控制类、控 制条类等
? 图形和打印类,包括:输出类、绘图工具类等
? 简单数据类型类,包括:字符串类、位置类、时间类、其他等
? 集合类,包括:模板集合类、数组类、列表类、映射类等
? 文件和数据库类,包括:文件 I/O类,DAO类,ODBC类等
? OLE支持类,包括,OLE包容器类,OLE服务器类,OLE拖放和数据传
输类,OLE公用对话框类,OLE自动化类,OLE控制类,OLE相关类、
Active类等
? Internet和网络类,包括,ISAPI类,Windows Socket类,Win32
Internet类等
? 调试和异常处理类,包括:调试支持类、异常处理类等
? 其他各种辅助类
习 题