,内存文件 ,活动流和 Windows 套接字提供了接口 .所
有由 CFile 派生的类可以被 Carchive 对象用于执行串行化 . 8. 异常类 :
9. 集合类 :
CException 创建一个 CException 对象 , 由 CObject 类派生 , 处理程序执行过程中异常发生的
问题 .
以上是几种
常用的基础类 , 除了上述介绍的基础类外 , 还有命令处理类 , 控制类 , 菜单类 , 数据 库类等 , 在此就不一一介绍了 .
从继承关系来看 , 又可将 MFC 中的类分成两大类 : 大多数据的 MFC 类是从 CObject 继承下来 ; 另 外一些类则不是从 CObject 类继承下来 , 这些类包括 : 字符串类 Cstring , 日期时间类 Ctime , 矩形 CRect 类 , 点 CPoint 等 , 它们提供程序辅助功能 . 由于 MFC 中大部分类是从 CObject 继承下来的 , CObject 类描述了几乎所有的 MFC 中其他类的一 些公共特性 .CObject 类为派生类提供对象诊断服务 —— — MFC 提供了许多诊断特性 , 它可以 : 输出对象内部信息 : CDumpContext 类与 CObject 的成员函数 Dump 配合 , 用于在调试程序时输出对
象内部数据 . 对象有效性检查 : 重载基类的 AssertValid 成员函数 , 可以为派生类的对象提供有效性检查 . 运行时访问类的信息 : MFC 提供了一个非常有用的特性 , 它可以进行运行时的类型检查 .如果 从 CObject 派生出一个类 , 并使用
了以下 3 个宏 ( IMPLEMENT - DY NAMIC , IMPLEMENT - DY NCRE2 ) 之一 , 就可以 : ATE , IMPLEMENT - SERIAL 运行时访问类名
·62 ·
南
京
农
专
学
报
2001 年 3 期 第
安全可靠地把通用的 CObject 指针转化为类的指针等等 MFC 中还有一部分重要内容是宏和全程函数 .若某个函数或变量不是某个类的一个成员 , 那么 它是一个全程函数或变量 .Microsoft 基本宏和全程函数提供以下功能 : 数据类型 , 运行时刻对象类型 服务 , 诊断服务 , 异常处理 , CString 格式化及信息框显示 , 消息映射 , 应用消息和管理 , 以及对象连 接和嵌入 (OLE) 服务和标准命令和 Windows IDS . 全局函数以 "Afx"为前缀 , 所有全局变量都是以 "afx"为前缀 , 宏不带任何特别前缀 , 但全部 大写 .常见的全局函数和宏有 : AfxGetApp , AfxGetMainWnd , AfxMessageBos , DE2BUG NEW 等 . 2 下面通过一个实例说明 MFC 在图形用户界面中的使用技巧 , 该实例是一个简单的绘制草图的应 用程序 , 它可以通过鼠标在界面中任意的绘图 , 还可以改变笔宽和笔的颜色 , 在改变笔宽和笔的颜色 的时候 , 采用了菜单 ,对话框和工具栏等图形用户界面常用的工具 .另外 , 它采用了多视对应同一文 篇幅的关系 , 下面我们在基本框架上生成一支可能自由绘图的笔 , 该笔类 CStroke 可以由 CObject 类派 生 , 代码如下 : class CStrokeL : public CObject publie : CStroke (UINT nPenWidth) ; protected : CStroke () ; DECLARE - SERIAL ( CStroke) ‖ ATTRIBUTES
protected : UINTm2nPenWidth ; ‖ 笔的宽度 return FALSE ; InitDocument () ; return TRUE ;} publie : CArray < CPoint , CPoint > m2pointArray ; ‖ 用来存放笔划的数组 CRectm2rectBounding ; publie : CRect &; GetBounding Rect () {returnm2rectBounding ;} publie : BOOL DrawStroke ( CDC 3 pDC) ; void FinishStroke () ; publie : virtual void Serialize ( CArchive &; ar) ;} ;
档的技术 , 即在一个视中绘图另一个视中立即反映出来 . 大家知道 , 采用旧的面向过程的编程技术也可以实现上述功能和界面 , 但编写起来非常麻烦 , 而 MFC 编程则简单了很多 . 首先 , 我们的主窗口可以由多
文档结构的主框架窗口的基类 CMDIFrameWnd 来派生 , 而
文档框架 窗口则可以由 CMDIChildWnd 派生 , 通过这两个基类我们可以很容易地生成 Windows 风格的主界面 , 而不需要用图形函数一个一个的绘制 .在我们的应用程序中还有两个类是不可缺少的 , 一个是文档 类 , 由 CDocument 派生 ; 另一个是视类 , 由 CScrollView 派生 , 注意在这里我们使用的是可以滚动的 视 , 若不需滚动则可以从 CView 派生 .另外 , 从封装了初始化运行和结束应用代码的基类 CwinApp 中 派生出我们的主