MFC 类库结构 总结

MFC主要类库结构总结

MFC类主要分为应用程序结构类、窗口支持类、图书设备类、模版集合类、简单数据类型类以及全局AFX函数等6个类。

1.      应用程序结构类

应用程序结构类代表的是应用程序的基本元素,主要包括了CcmdTarget类、CwinThread类、CwinApp类、Cdocument类以及CdocTemplate类等。应用程序开始运行时,应用程序结构类最先被初始化。应用程序结构类的继承结构如图:

CCmdTarget类是MFC类库中消息映射体系的基类,继承于Cobject类。该类负责把消息命令传递给用户编写的消息响应函数,如果需要处理消息,则从CcmdTarget类中派生一个类出来,但很少从CCmdTarget类直接派生类出来用。

CWinThread类的对象代表应用程序内部运行的线程。运行的主线程通常由CwinApp类的派生类提供。并CwinThread类支持两种线程:工作线程和用户界面线程.工作线程不能够发送、接收消息,通常用于后台运行;用户界面线程能够发送和接收消息,直接派生于CwinThread类。

CWinApp类表示应用程序类,在使用MFC创建的所有应用程序中,都包含一个继承于该类的应用程序子类。CwinApp类中封装了windows的消息循环机制,并负责应用程序的初始化和退出的清理工作。

文档类CDocument类直接派生于CCmdTarget类,提供了文档的基本功能,并且CDocument类是Document/View结构中的应用程序文档的基类,主要用于代表程序中的数据。

CDocTemplate类定义了文档模版的基本函数功能。通常通过应用程序类的InitInstance函数来创建一或多个文档模版。文档模版定义了框架,文档和视图三个类之间的关系。

 

2窗口支持类

窗口支持类包含了基于Windows应用程序的一些可视性元素,如窗口,对话框,控件等。窗口支持类中的所有类都是从CWnd类中派生的,包括CFrameWnd类,CDialog类,CView类,常用控件等。那么窗口支持类的继承框架如下:

MFC应用程序中的所有窗口都是继承于CWnd类,CWnd类提供了MFC中所有窗口类的基本功能。根据窗口的不同类型,CWnd类派生出了许多子类,如框架窗口类CFrameWnd,对话框类CDialog,视图类CView等。

框架窗口类CFrameWnd提供Windows单文档界面(SDI)的重叠或弹出式的框架窗口,并提供管理窗口的成员。CFrameWnd类的派生类CMDIFrameWnd类则提供了多文档界面(MDI)框架窗口,CMDIChildWnd类则提供了多文档界面的子窗口。

对话框类CDialog类是在屏幕上显示的对话框的基类。CDialog类对象是对话框模版与一个CDialog派生类的组合,通过使用对话框编辑器创建对话框并存入资源之中,然后为对话框创建一个CDialog派生类。

视图类CView是应用程序框架窗口中的子窗口,视图是用户与文档交互的媒介,用户可以在视图窗口内输入文本,绘图等。

 

3图像设备类

MFC提供图形设备类中包含了设备环境(Device Context)类,以及一些常用的GDI对象。设备环境类中包含了一组绘制图形的函数集合,以及确定绘图的模式和绘图的映射模式。绘图对象类封装了常用GDI绘图对象,包括画笔(Pen,刷子(Brush,字体(Font,位图(Bitmap,调色板(Palette)和区域(Region)这些类的继承结构如下:

根据不同的输出设备, MFC分别提供了相应的设备环境类,而CDC类是所有设备环境的基类,该类封装了所有图形输出函数。CDC类派生了CClientDC类、CMetaFileDC类,CPaintDC类以及CWindowDC类。

CClientDC类主要提供了对窗口的客户区域的图形操作。窗口的客户区域是排除窗口的框架,标题栏,菜单栏,工具栏和状态栏的区域。

CMetaFileDc类专门用于图元文件的绘制。图元文件记录一组GDI命令,可以通过这一组GDI命令重建图形输出。使用CMetaFileDC时,所有的图形输出命令会自动记录到一个与CMetaFileDC相关联的图元文件中。

CPaintDC类是响应WM_PAINT消息的设备环境。当窗口需要重绘时,应用程序响应OnPaint消息来刷新窗口的实现,CPaintDC类通常在MFC应用程序的OnPain函数中使用。

CWindowDC类可以提供在整个窗口内绘图的设备环境,该设备环境可以用于窗口客户区和非客户区的绘制,除非用户需要单独绘制窗口边框和按钮,否则一般不使用CWindowDC环境。

 

4模版集合类

模版集合类主要分为3个部分:数组类,链表类和映射类,在这里暂不做详细总结

5简单数据类型类

简单数据类型类定义了一些常用的数据类型,包括CPoint类,CSize类,CRect类,CString类和CTime类。分别代表点,尺寸大小,矩形区域,字符串和日期时间,这些都是MFC中常用的数据类型

CPoint类封装了windowsPOINT数据结构,并提供了操作CPointPOINT结构的成员函数。CPoint类对象可以被用在任意可以使用POINT结构的地方。

CRect类封装了WindowsRECT结构。CRect类定义了矩形的左上角和右下角点的坐标,并提供一些基本的矩形处理函数。

CSize类也封装了WindowsSIZE结构。CSize类直接继承SIZE结构体,SIZECSize包含了两个cx,cy的公有成员变量,用来表示一个尺寸大小的宽度和高度。

CString类的对象由可变长的字符组成。CString使用类似于Basic的语法提供函数和操作符。

CTime对象代表一个绝对的时间和日期。CTime类引入了ANSItime_t数据类型以及相关的运行时函数。

6全局AFX函数

MFC类库主要可以分为两个部分:MFC类和宏与全局函数。

常用的MFC全局函数如下:

全局函数

说明

AfxMessageBox

显示一个消息提示框,功能与MessageBox相同

AfxFreeLibrary

用于释放由AfxLoadLibrary载入的动态链接库(DLL)模块

AfxGetApp

取得应用程序中唯一的CWinApp对象的指针

AfxGetAppName

返回一个包含应用程序名字的字符串

AfxGetInstance

获取当前运行实例的句柄

AfxGetInstanceHandle

返回一个代表当前应用程序实例的HINSTANCE变量

AfxGetMainWnd

返回指向应用程序的当前主窗口的指针

AfxGetResourceHandle

返回代表应用程序默认资源的HINSTANCE变量

AfxLoadLibrary

调用一个DLL模版,同时返回一个句柄

AfxSocketInit

初始化Windows套接字Socket

AfxSetResourceHandle

设置指向应用程序默认资源的句柄

AfxBeginThread

创建一个新线程

AfxEndThread

结束当前线程

AfxGetThread

取得指向当前线程的CWinThread指针

AfxWinInit

MFC提供的WinMain函数调用,用于初始化应用程序

 

展开阅读全文

没有更多推荐了,返回首页