字体
第(2/5)页
关灯
   存书签 书架管理 返回目录
函数用于文档对象的初始化,Seralize()函数用于实现序列化。虽然定

    义了这两个函数,但只是提供了一个框架,具体的函数内容需要用户自己加入。

    处理文档序列化的OnSerialize()函数的默认代码如下:

    void CHelloMFCDoc::Serialize(CArchive& ar)

    {

    //存储

    if (ar.IsStoring())

    {

    // TODO: add storing code here

    }

    //读取

    else

    {

    // TODO: add loading code here

    }

    }

    技巧:当文档被修改时,在其标题上加上“*”作标志。

    文档类还可处理由菜单项、工具栏按钮或快捷键生成的某些命令。默认情况下,

    CDoccomnt 使用序列化方式处理“File|Save”和“File|Save as”菜单命令,文档可以有消息

    映shè,但与视图不同,文档无法处理标准Windows 消息,而只能处理WM_COMMAND 命令

    消息或命令。

    实例2-3:技巧演示程序。源代码在光盘中“\02\实例2-3\EditApp”目录下。

    如重载CEditAppDoc 类的SetModifiedFlag 函数,代码如下:

    void CEditAppDoc::SetModifiedFlag(BOOL bModified /* = TRUE */)

    {

    CString strTitle = GetTitle();

    CString strDirtyFlag = " *"; // note space before the ’*’

    枫叶文学网www.fywxw.com

    第2 章 应用程序基本框架

    ·25·

    // so we don’t break Save As dialog

    if (!IsModified() && bModified)

    {

    SetTitle(strTitle + strDirtyFlag);

    }

    else if ( IsModified() && !bModified )

    {

    int nTitleLength = strTitle.GetLength();

    int nDirtyLength = strDirtyFlag.GetLength();

    SetTitle( strTitle.Left(nTitleLength - nDirtyLength) );

    }

    UpdateFrcomCounts();

    CDoccomnt::SetModifiedFlag(bModified);

    }

    同时映shèCEditAppView 的EN_CHANGE 消息如下:

    void CEditAppView::OnChange()

    {

    // TODO: If this is a RICHEDIT contro
上一页 目录 下一页