字体
第(4/5)页
关灯
   存书签 书架管理 返回目录
像机输入信号等,文档对象负责来

    自所有数据源的数据的管理。

    视图是数据的显示窗口,为用户提供了文档的可视的数据显示,它把文档的部分或全部

    内容在窗口中显示出来。视图还为用户提供了一个与文档中的数据jiāo互的界面,它把用户的

    输入转化为对文档中数据的cāo作。一个文档可以有多个不同的视图。比如,在Excel 电子表

    格中,可以将数据以表格方式显示,也可以将数据以图表方式显示。一个视图既可以输出到

    窗口中,也可以输出到打印机上。图2-19 显示了文档-视图结构中的文档与视图的关系。

    图2-19 文档与视图的关系

    枫叶文学网www.fywxw.com

    第2 章 应用程序基本框架

    ·27·

    MFC 的文档视图结构机制把数据同它的显示以及用户对数据的cāo作分离开来,所有对数

    据的修改由文档对象来完成,视图调用这个对象的方法来访问和更新数据。

    CDoccomnt 类的UpdateAllViews()成员函数和CView 类的OnUpdate()成员函数传递描述

    被修改的文档部分的信息。上述机制可限制视图必须重绘的区域。当视图变得无效时,

    Windows 将WM_PAINT 消息发送给它,该视图的OnPaint()函数处理函数通过创建CPaintDC

    类的设备上下文对象来响应该消息并调用视图的OnDraw()成员函数,通常不必编写重写的

    OnPaint()处理成员函数。设备上下文是包含设备(例如显示器或打印机)绘图属xìng信息的

    Windows 数据结构,所有的绘图调用都通过设备上下文对象进行。对于屏幕上的绘图,

    CPaintDC 对象传递给OnDraw()函数。对于打印机上的绘图,为当前打印机设置的CDC 对象

    传递给OnDraw()函数。视图中的绘图代码首先检索指向文档的指针,然后通过设备上下文进

    行绘图调用,下面简单的OnDraw()函数示例阐释了该过程:

    void CMyView::OnDraw( CDC* pDC )

    {

    CMyDoc* pDoc = GetDoccomnt();

    CString s = pDoc->GetData(); // Returns a CString

    CRect rect;

    GetClientRect( &rect );

    pDC->SetTextAlign( TA_BASELINE | TA_CENTER );

    pDC->TextOut( rect.right / 2, rect.bottom / 2,

    s, s.GetLength() );

    }

    在此例中,将GetData()函数定义为派生文档类的成员,打印从文档获取的任何字符串,

    并使字符串在视图中居中。如果OnDraw 调用用于屏幕绘图,则传递给pDC 的CDC 对象是

    一个CPaintDC(它的构造函数已经调用BeginPaint)对象,对绘图函数的调用通过设备上下

    文指针进行。

    文档的大小经常比它的视图可以显示的大小要大,之所以会发生这种情况,是因为文档

 
上一页 目录 下一页