4.4.3 CView视图类
视图类的主要功能是显示文档数据,并接受用户对数据的修改。它以图形化方式将数据显示出来,并提供了与用户交互的接口,将用户的输入操作解释为对文档对象的操作。
一个视图对象只能与一个文档对象连接,视图类是文档与用户间进行联系的纽带,当用户打开一个窗口或分割一个窗口时,程序框架就会构造一个视图类对象与文档相关联,一个文档对象可连接多个视图对象。
当文档对象发生变化时,与该文档连接的所有视图都应做出反应,这一过程通过调用CDocument::UpdateAllViews()函数来得到实现。
CView成员不太多,同CDocument类似,它也只提供了基础、必要的框架,用户通过对该类的派生来充实所需的功能。下面对该类重要的成员函数进行简单的说明。
(1)OnDraw():通常通过修改该函数来完成文档数据的显示。
(2)OnUpdate():负责更新数据,对文档数据的正确显示起到必要的支持。
(3)OnBeginPrinting():负责打印的初始化,在开始打印作业时调用该函数,应当重载该函数以分配所需要的资源。
(4)OnEndPrinting():结束打印时调用该函数,重载该函数育释放资源。
(5)OnPreparePrinting():在文档被打印或预览之前调用该函数,重载该函数以初始化Print对话框。
(6)OnPrint():该函数负责打印或预览文档。
(7)OnEndPrintPreview():在退出预览时调用该函数,将主框架窗口恢复到打印预览之前的状态。
Cview类只提供了基础框架,在MFC中派生了Cview类的许多子类,为不同的应用提供了强大支持。下面我们对其他视图派生类做简单介绍。
这些视图类都不是直接派生于Cview类,而是派生于Cview的子类CCtrlview,CCtrlview类的派生类对应于Windows通用控件,提供了与通用控件相对应的功能。
(1)CEditView类
CEditView类提供了一个简单的多行文本编辑器的视图,主要支持编辑控件的相应功能,可以将CEditView类用做对话框中的一个控件,也可以将它用做文档视图。
【实例4-2】 简单的文本编辑器
光盘路径 /04/CEditView/
实例目的 创建一个简单的文本编辑器
本实例演示的是使用CEditView类来实现简单的文本编辑器。
(1)创建工程
在IDE中依次选择“File”→“New”菜单命令,或直接按快捷键“Ctrl+N”,打开“New”对话框。
在“New”对话框中单击“Projects”选项卡,在列表框中选择“MFC AppWizard(.exe)”项,在“Project name”文本框中输入“CEditView”,其他使用默认值,单击“OK”按钮,弹出“MFC AppWizard-Step1”对话框。
在“MFC AppWizard-Step1”对话框中,选中“Multiple Document”单选框,其他使用默认值,单击“Next”按钮。
弹出“MFC AppWizard-Step 2 of 6”对话框,保持默认值,后面几步也都保持默认值,在“MFC AppWizard-Step 5 of 6”对话框中,单击“Next”按钮,弹出“MFC AppWizard-Step 6 of 6”对话框。
选择视图基类为“CEditView”,如图4-9所示。然后单击“Finish”按钮,在弹出的“New Project Information”对话框中单击“OK”按钮,就可以完成工程的创建。
图4-9 选择视图基类
(2)运行程序
完成程序的创建后,编译并运行程序,就建立了一个可用的文本编辑器了,可以在窗口中输入文字,如图4-10所示。
图4-10 程序运行结果
这个例子演示了CEditView类的强大功能,基本上我们什么也没做就得到了一个实用的程序。当然,这只是一个基础,能实现的功能还不多,可以添加自己的代码以实现特定的功能。
CRichEditView
CRichEditView类提供了比CEditView更强大的功能,就如同编辑控件与Rich控件的比较一样,它使你能够使用带格式编辑的文档视图。
使用该视图可以输入和编辑文本,文本可实现字符或段落的格式化,也可以嵌入OLE对象,为格式化文本提供了设计界面。使用AppWizard创建基于MDI的应用程序框架,在最后一步选项时,选择视图基类为“CRichEditView”。
CTreeView类
CTreeView类可以在文档/视图结构中使用树控件的功能,用于显示具有层次结构的数据,如同Windows资源管理器中的文件夹一样。
CListView类
CListView类提供了列表控件和CListCtrl的功能,使用文档/视图结构实现了对列表空间的功能。
CFormView类
CFormView类是用于窗体视图的基类,它派生于CScrollView类,支持滚动的视图。
CFormView类建立在对话框模板资源的基础上支持在文档视图结构中使用对话框类型的程序设计。
CHtmlView类
CHtmlView类派生于CFormView类,在文档/视图结构中提供WebBrowser控件的功能,该视图可用于作为一个浏览器进行网页及文件夹的浏览,它支持超链接、统一资源定位符(URL)导航器及历史列表。
【责任编辑:
杨硕 TEL:(010)68476636-8001】