常用的MFC类

CRuntimeClass结构

在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关系判断等成员函数。每一个从CObject类派生的类都有一个CRuntimeClass结构同它关联,以便完成在运行时得到对象的信息或基类的信息。

要使用CRuntimeClass结构,必须结合使用RUNTIME_CLASS()宏和其他有关运行时类型识别的MFC宏。

CObject类

MFC的CObject类为程序员提供了对象诊断、运行时类型标识和序列化等功能。

(1)       对象诊断:利用成员函数AssertValid进行对象有效性检查;利用成员函数Dump输出对象的数据成员的值,诊断信息以文本形式放入一个数据流中,用于调试器的输出窗口信息显示。(只能用于Debug版的应用程序)

(2)       运行时类型识别:GetRuntimeClass根据对象的类返回一个相关联的指向CRuntimeClass结构的指针,它包含了一个类的运行信息;函数IsKindOf用于测试对象与给定类的关系。

(3)       通过与Carchive相结合,CObject类为其派生类提供了序列化功能。要创建一个支持序列化的派生类,必须将DECLARE_SERIAL宏添加到类定义中,将IMPLEMENT_SERIAL添加到类的实现文件中。

CCmdTarget类

由CObject类直接派生,所有能实行消息映射MFC类的基类。功能如下:

(1)消息发送

MFC应用程序为每个CCmdTarget派生类创建一个称为消息映射表的静态数据结构,可将消息映射到对象所对应的消息处理函数上。

(2)设置光标

程序正在进行某种操作:BeginWaitCursor()将光标改为沙漏形状;

操作完成:EndWaitCursor()将光标改回到之前的形状;

处于等待状态时由于某些操作改变了光标形状后,RestoreWaitCursor()用于将光标还原为等待状态。

(3)支持自动化

CCmdTarget类支持程序通过COM接口进行交互操作,自动翻译COM接口的方法。方 法是调用EnableAutomation()、FromIDispatch()、GetIDispatch()、IsResultExpected() 和 OnFinalRelease()。

CWinThread类

由CCmdTarget派生,主要工作是创建和处理消息循环。

CWinApp类

从CWinThread类派生,成员函数InitApplication()、InitInstance()、Run()。

在MFC应用程序中有且仅有一个CWinApp派生类的对象,代表程序运行的主线程,代表应用程序本身。

CWnd类

由CCmdTarget类直接派生,是MFC中最基本的GUI对象。公共变量m_hWnd用于存放供API函数调用的窗口句柄。

CframeWnd类

从CWnd类派生而来,主要用来掌管一个窗口。其对象是一个框架窗口,包括边界、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。其常用成员函数:

GetActiveDocument():得到当前文档的指针。

GetActiveView():得到当前视图的指针。

SetActiveView():激活一个视图。

GetTitle():得到框架窗口的标题。

SetTitle():设置框架窗口的标题。

SetMessageText():设置状态栏文本。

CDocument类

从CCmdTarget派生,作为用户文档的基类,代表了用户存储或打开一个文件。主要功能是把对数据的处理从对用户的界面处理中分离出来,同时提供一个与视图类交互的接口。

常用的成员函数有:

OnNewDocument():建立新文档。

OnOpenDocument():打开一个文档。

OnCloseDocument():关闭文档。

OnSaveDocument():保存文档。

UpdateAllView():通知所有视图文档被修改。

SaveModified():设置文档修改标志。

CView类

从CWnd类派生而来,是MFC视图类和用户视图类的基类。CWnd::Invalidate()或CWnd::InvalidateRect()可以刷新视图。

MFC视图类及其使用

MFC视图类

描述

CView

通常的视图类,可以用作图像编辑或者可以和一个控件相连。

CCtrlView

另一个常用视图类。可以用作一个虚拟控件创建一个视图。

CEditView

往视图中加入一个CEdit控件,并提供基本的文本编辑支持,具有打印功能。

CRichEditView

在视图中封装了一个RichEdit控件,该视图可以用作显示不同颜色、字体、大小的文本,同时也可以显示图象对象。需要复合文本支持。

CListView

在窗口中提供一列表控件的功能,列表控件本身也可以提供几个视图,比如报表、列表、大图标和小图标。

CPreviewView

非文档视图,可作为打印预览,和非文档设备上下文类CPreviewDC协同工作。

CTreeView

在视图中封装一个树型控件。

CScrollView

通过控制视图和映射模式控制窗口显示,并响应滚动条的消息而滚动。

CFormView

结合了一个对话框模板,并可以在视图中放置控件。

CHtmlView

视图控件中的WWW浏览器。提供一个可以供用户在其中游览Web和本地机器上目录的窗口,支持超链接和导航功能,并保持历史记录。