现在的位置: 首页 > 综合 > 正文

3.21-如何在视图的标题中显示一个“修改过”的指示符,与某个“修改过”的文档关联?

2014年02月09日 ⁄ 综合 ⁄ 共 862字 ⁄ 字号 评论关闭

      可以安全的重载CDocument类的函数SetModifiedFlag(),在CDocument类中,该函数是作为虚函数来声明的,下面的程序清单说明了改函数的实现,当文档成为“有改动”的时候,它修改该文档的标题,并且附加上一个“ *”,当“修改过”的文档被保存之后,“ *”标记被移去。

 

第一步:在类的定义头文件中

 virtual void SetModifiedFlag(BOOL bModified);

第二部:在类的实现文件中

void CDrawDoc::SetModifiedFlag(BOOL bModified)
{
       CString strTitle=GetTitle();

       //注意:“*”标志前的空格,它防止“Save As”对话框中的文档名出现问题
       CString strIndicator=" *";

        //1、根据文档对象的新状态设置正确的标题
        if( !IsModified() && bModified)
        {
                //1a、文档以前是"未修改的",现在是"已改动过的"
                SetTitle(strTitle + strIndicator);
        }
        else if( IsModified() && !bModified)
        {
                //1b、文档以前是"已改动过的",现在是"未修改的"
                SetTitle( strTitle.Left( strTitle.GetLength() - strIndicator.GetLength() ) );
        }
        //2、强制更新框架窗口的标题,这将使框架窗口显示新的标题
        UpdateFrameCounts();
        //3、调用标准函数
        CDocument::SetModifiedFlag(bModified);
}

 

 

抱歉!评论已关闭.