void CBaseDocViewDemo4Doc::SetModifiedFlag(BOOL bModified)
{
CString strTitle=GetTitle(); CString strDirtyFlag=" 文档已被修改,注意保存!" //注意引号内前面的空格
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);
}
{
CString strTitle=GetTitle(); CString strDirtyFlag=" 文档已被修改,注意保存!" //注意引号内前面的空格
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);
}
解决方案 »
- Think第二版发布了!(本人开发的C语言跨平台开发库)
- UDP穿透NAT打洞问题
- 关于网络传输结构体的问题
- 我想在DirectShow中使用G.729压缩音频,是不是得自己写一个编码器?UP有分!
- 第三次问vc中ODBC与数据库操作的问题,望解答
- ShellExecute 怎么使用啊
- 一个VC++画圆的小问题
- MSDN的许多例子在Win32 Unicode配置下在WIN98中运行出错?WIN2000下没问题
- vc串口问题,请大家多多帮忙,我把所有的分都给了....急
- 请问谁有判定平面多边形相交的算法(急)?
- 有谁了解QQ宠物,根据FALSH影片SWF文件,是如何创建一个不断变化的不规则窗体的?
- 点击按钮让对话框增加高度-类似qq登陆框上'设置 '
为什么在这段代码里每次都跟bModified的取值相反?
MSDN上写,文档如果被修改IsModified()就返回TRUE,
可是if后面明明是 if(!IsModified() && bModified) 明明已经取非了
可是这段代码偏偏运行得一切正常,真是没法理解…………
去掉IsModified()等东西以后文档一修改就退出,
真是 囧…………………………
SetModified(TRUE);
程序运行一切正常,
这个单文档程序就是在文档内容改变时提醒用户文档已经修改,
IsModified()这函数究竟干什么用的,
真是无法理解………………
if(!IsModified() )
应该是//如果没有被修改了 的意思了。
BOOL IsModified();Return ValueNonzero if the document has been modified since it was last saved; otherwise 0.如果文档被保存后又被改变则返回非零的值,否则返回0在你发出来的这段代码里,IsModified()取得的是当前的状态,bModified是将要设置的状态(目标状态)
从逻辑上来说,当前状态跟目标如果是一样的话就是什么都不用做,
所以用一个非,刚好可以让程序在IsModified()跟bModified相同时不进行任何处理(也就是不进入if也不进入else)那个判断拆开来看就明白了
void CBaseDocViewDemo4Doc::SetModifiedFlag(BOOL bModified)
{
CString strTitle=GetTitle(); CString strDirtyFlag=" 文档已被修改,注意保存!" //注意引号内前面的空格
if(IsModified()!= bModified)
{
if(bModified) //如果被修改了
{
SetTitle(strTitle + strDirtyFlag); //修改标题栏
}
else //已经保存了文档
{
int nTitleLength=strTitle.GetLength();
int nDirtyLength=strDirtyFlag.GetLength();
SetTitle(strTitle.Left(nTitleLength - nDirtyLength)); //恢复原来的标题
}
}
UpdateFrameCounts();
CDocument::SetModifiedFlag(bModified);
}