以下语句。麻烦帮忙看看,该如何重载CDocument类的虚函数?

我要实现“当文档被修改时,在标题上加上标志'*'?”
网上搜出的全是:重载CDocument类的虚函数virtual SetModifiedFlag:
void CTest2Doc::SetModifiedFlag(BOOL bModified)
{
CString strTitle = GetTitle();
CString strDirtyFlag = " *"; // note space before the '*'
// 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) );
}
UpdateFrameCounts();
CDocument::SetModifiedFlag(bModified);
}
但是都没有提如何重载该函数,我在CRichEditDoc的“Add virtual Function”中并未看到此函数,手动加等各种方法都试过了,还是没能解决,请高手赐教,不胜感激!
建立类向导中并无此函数,所以无法添加,我只能手动添加,在.h中加个申明,在.cpp中加个函数,virtual也加了,CDocument::SetModifiedFlag(bModified);也加了,效果是程序刚一启动时函数执行了一下,之后在文档改动时就不执行了,我要的效果是只要文档有改动就执行此函数,如何做到呢??

凤凰求蛊
浏览 355回答 2
2回答

慕后森

1.你申明这个函数的时候是否加 virtual 了?申明:virtual void :SetModifiedFlag(BOOL bModified);2.函数实现中先执行 CDocument::SetModifiedFlag(bModified);再执行你的代码,否则你的修改会被覆盖的。3.调试一下看看你的代码是否执行了。

繁华开满天机

在类名上右键->add virtual function即可。
打开App,查看更多内容
随时随地看视频慕课网APP