这个问题的一般解决方案可以像“3.20如何定制视图的标题?”中的说明一样来实现。如果所要希望的只是显示一个简单的“修改过”指示符。例如:某个“有改动的”文档标题中的一个‘*’,那么只需要简单的重载CDocument::SetModifiedFlag()函数,无论什么时候改变文档对象时,都可以调用该函数。
我们可以安全的重载SetModified(),因为在CDocument类中该函数是作为虚函数来声明的。尽管Visual C++的在线帮助忘了提到该事实。
下面的程序清单说明了SetModified()的实现,当文档成为“有改动的”时候,它修改该文档的标题,并附加上一个‘*’,当文档再次转变为“已保存”时--通常是因为用户保存了改文档--移去这个‘*’。
还要注意在‘*’前面的额外空格是必须的,它防止MFC把星号作为文档名的一部分来处理。最后要注意的是,必须在没有任何ClassWizard帮助下手工重载SetModified()。