为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

凤凰求蛊 2021-07-08 11:07:44
我要实现“当文档被修改时,在标题上加上标志'*'?”网上搜出的全是:重载CDocument类的虚函数virtual SetModifiedFlag:void CTest2Doc::SetModifiedFlag(BOOL bModified){CString strTitle = GetTitle();CString strDirtyFlag = " *"; // note space before the '*'// so we don't break Save As dialogif (!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);也加了,效果是程序刚一启动时函数执行了一下,之后在文档改动时就不执行了,我要的效果是只要文档有改动就执行此函数,如何做到呢??
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

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

查看完整回答
反对 回复 2021-07-11
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

在类名上右键->add virtual function即可。

查看完整回答
反对 回复 2021-07-11
  • 2 回答
  • 0 关注
  • 305 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信