字体
第(3/5)页
关灯
   存书签 书架管理 返回目录
l, the control will not

    // send this notification unless you override the CEditView::OnInitDialog()

    // function and call CRichEditCtrl().SetEventMask()

    // with the ENM_CHANGE flag ORed into the mask.

    GetDoccomnt()->SetModifiedFlag(TRUE);

    // TODO: Add your control notification handler code here

    }

    运行结果如图2-18 所示。

    图2-18 更新文档标题示例

    2.4.2 视图类

    AppWizard 产生的视图类名为HelloMFCView,其定义在HelloMFCView.h 中,实现在文

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·26·

    件HelloMFCView.cpp 中。视图的职责是以图形方式将文档数据显示给用户,以及接受用户

    输入并将用户输入解释为对文档的cāo作。编写视图类的任务通常包括:

    ? 编写视图类的OnDraw 成员函数来呈现文档数据。

    ? 将适当的Windows 消息和用户界面对象(如菜单项)连接到视图类中的消息处理成员

    函数。用以实现处理程序解释用户输入。

    另外,可能需要在派生的视图类中重写其他CView 成员函数,具体说来,可能需要重写

    OnInitialUpdate()函数为视图执行特殊的初始化,并重写OnUpdate()函数以执行在视图重绘自

    身前所需的任何特殊处理。对于多页文档,可能还必须重写OnPreparePrinting()函数,用要打

    印的页数和其他信息初始化打印对话框。

    应用程序中几乎所有的绘图都在视图的OnDraw 成员函数中发生,必须在视图类中重载

    OnDraw()函数(鼠标绘图是个特例,必须处理鼠标动作消息):

    ? 通过调用文档成员函数获取数据;

    ? 通过调用框架传递给OnDraw()函数的设备上下文对象的成员函数来显示数据。

    当文档的数据以某种方式更改后,必须重绘视图以反映该更改,一般情况下,文档数据

    的更改在用户通过视图对文档进行更改时发生。在此情况下, 视图调用文档的

    UpdateAllViews()成员函数,通知同一文档上的所有视图对自身进行更新,UpdateAllViews()

    函数调用每个视图的OnUpdate()成员函数,使视图的整个工作区无效。可以重写OnUpdate,

    仅使工作区中映shè到文档修改部分的那些区域无效。

    2.4.3 文档类与视图类的相互关系

    在文档-视图结构里,文档是一个应用程序数据基本元素的集合,它是构成应用程序所使

    用的数据单元;另外它还提供了管理和维护数据的手段。文档是一种数据源,数据源有很多

    种,最常见的是磁盘文件,也可以来自串行口、网络或摄
上一页 目录 下一页