我的问题是这样的:
我想通过 CFileDialog 打开文件对话框来打开文件
(1)当我通过“选中一个文件,然后单击打开按钮”的方式打开文件的时候,一切都很正常
(2)当我通过“选中一个文件,然后双击打开文件”的方式打开文件的时候,出现问题了
我的程序是个绘图程序,打开的文件是绘图的数据
当通过(1)打开文件时,该文件所包含的图形信息可以绘图窗口正常显示出图形来
当通过(2)打开文件时,绘图窗口上,数据所描述的图形,只是闪现一下,然后就不见了,但是数据是读进去了,就是不显示,不知道为什么。
我之前怀疑是不是自己重载鼠标左键双击捣的鬼,但是我后面把重载函数去了,以及在重载函数中加上视图更新,发现效果一样,这样就排除了重载左键双击引起这个问题的可能性了
我现在想知道,默认的双击打开函数怎么去重载,因为通过“打开”按钮打开文件的时候,我是加入了视图更新的函数,我猜想,默认的双击打开文件,应该没有这个视图更新的操作
下面是我的代码,大家帮忙分析一下,谢谢~
CFileDialog dlg(TRUE, _T("fta"), NULL, OFN_OVERWRITEPROMPT, _T("Fault Tree Analysis Files(*.fta)|*.fta||"));
if(dlg.DoModal()==IDOK)
{
CFile theFile;
ASSERT(theFile.Open(dlg.GetPathName(), CFile::modeRead));
CArchive archive(&theFile, CArchive::load);
Serialize(archive);
//close
archive.Close();
theFile.Close();
}
Invalidate();
还有一个问题,我刚刚说了,双击打开文件,数据是读进去了,要是双击的时候并没有执行视图更新,那么数据读进去,在之后的操作里面包含了视图更新(比如说,移动操作),那么我执行移动操作后,应该更新出图形才对,事实证明,并没有。
所以我以上的分析应该是错误的
有没有人遇到过类似的问题,或者知道是什么原因吗?