我现在遇到一个问题,我认为这是MFC机制无法改变的,可是我的老总上司们认为这是一个比较严重的问题,我无法解决,特来请教各位高手。
用我编写的程序打开一个数据文件后(比如文件名为abc.abc),可以在程序窗体中显示这个数据文件的内容,然后和仪器通讯改变这个窗体中的数据,不保存,不新建,仍然再打开这个文件(abc.abc),窗体中的数据为通讯后数据,不会刷新到原来文件名为abc.abc的数据文件中的数据。
请问各位高手如何解决这个问题?
用我编写的程序打开一个数据文件后(比如文件名为abc.abc),可以在程序窗体中显示这个数据文件的内容,然后和仪器通讯改变这个窗体中的数据,不保存,不新建,仍然再打开这个文件(abc.abc),窗体中的数据为通讯后数据,不会刷新到原来文件名为abc.abc的数据文件中的数据。
请问各位高手如何解决这个问题?
解决方案 »
- 新手求助,关于XTreme Toolkit中CXTPReportControl拖拽的用法
- CSDN这两天热闹了,有两篇文章争锋相对。“买不起房的男人滚开,别毁了女人一生! ”和它的相对文章。(内附传送门)
- 能否自定义一个键注释或取消注释?能否排版时在x,y的逗号后加空格?
- 怎样向对话框发送WM_CTLCOLOR消息?
- 关于 new 和 delete 的一个问题
- 关于CPropertySheet的,在线等!!!!!!!!!!!!!!!!
- 在矢量图形中如何选中一个目标后,使其闪烁呢?
- ProggyClean,很好的编程字体,共享一下
- 如何动态的调整对话框中的组件的位置
- 加载其他.exe程序成托盘
- 如何获得父窗口的指针以操作其成员函数???
- 我想要一本对我sdk/mfc编程有帮助的操作系统的书.
我们也有象你说的这种通讯程序,没有这种问题。你不是 Doc/View程序,新建Doc会创建新的View,这个由CDocManager保证
除非你重载了OnFileOpen,并没有通过CDocManager::OpenDocumentFile打开文件。
UpdateAllViews(NULL);第二种方法:找到当前View强制刷新CMDIFrameWnd *pFrame =
(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;// Get the active MDI child window.
CMDIChildWnd *pChild =
(CMDIChildWnd *) pFrame->GetActiveFrame();// Get the active view attached to the active MDI child
// window.
CView *pView = pChild->GetActiveView();
pView->Invalidate();
不好意思,打错了
不够,还应该在你的doc类中加入SetModifiedFlag();设置修改标记
要不你调用UpdateView也没用的。
在 OnOpenDocument 函数里没有调用基类的函数。BOOL CYourDocument::OnOpenDocument(LPCTSTR lpszPathName)
{
if ( ! CDocument::OnOpenDocument(lpszPathName))
return FALSE; // your process
}
还有通讯时取得的数据居然不刷新文档,你这个程序有意思。通讯的时候或在第一次读完文档“abc.abc”后
调用SetPathName(NULL); 骗过CDocManager