可以安全的重载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);
}