view更新问题,在线等待,希望高手帮助解决 我建立了两个view ,但是没有同document联系起来,相互之间的数据转换仅仅是在view中转换,现在我又添加一个view,但是在我切换view的时候,数据不能同步。我分析了一下,数据仅仅实显示在view上,并没有写到view的内部,我想知道怎么样才能够再updateview的时候把数据更新到view中。谢谢了,在线等待 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不行的,这两个view和documenet之间没有联系仅仅是在view中自己切换 如果你使用的是视图/文档结构的话,请重载OnDraw(CDC* pDC)或OnPaint()在这两个函数中调用GetDocument();这时你就可以画你想画的所有内容.当文档内容改变时调用UpdateAllViews(this)即可使所有视图同步更新. 刚才没看清,应该这样改:把你所要画的内容放在CMainFrame 中;重载OnDraw(CDC* pDC)或OnPaint()在这两个函数中: CMainFrame* pFrame==(CMainFrame*)AfxGetApp().m_hMainFrame;然后你就可以画你想画的所有内容了.你没有必要在view 中保存数据.在各个view中都保存有一分指向其他各view 的指针.当在一个view中修改数据时同时向各个view 发送Invalidate().这时放在CMainFrame 中的内容就好象Document 一样.或者在CMainFrame中保存所有的view pointer.然后编一个UpdateAllViews().当在一个view中修改数据时同时向CMainFrame发送一个自定义消息,在CMainFrame 中响应该消息并调用自定义的UpdateAllViews().一个视不与Document联系是不能使用UpdateView的. tomid(磨牙狼) 我是在单文档单视的框架中添加了一个view,而且这个view没有有和Document联系,两个view之间的联系就是它们自己的指针了。在切换view后,调用SetActivewView(),然后SetActivewView调用各个View的updateview()。在各个view中的updateview函数中,从指针得到另外一个view的数据,然后仅仅写在view的窗口中,view中没有这些数据。我想做的就是如何能够将这些数据update到view中。这段代码不是我写的,我也不想对架构做很大的改动 CDocument *pDC=Getdocument();pDC->UpdataAllViews(); 怎么样才能够讲当前的view标示为活动的? 在框架窗口中:CFrameWnd::GetActiveView得到当前活动视指针 在单文档结构中一个文档只能对应一个视图,如果想同时显示多个视,有两个方法可参考:1、使用分割窗口,这方面的资料多如牛毛。2、象VC的Workspace一样,你觉得如何?如果还不行的话,再看下面:1、先生成一个与文档相关联的视.2、在该视的OnCreate中生成其他不带Document 的视,并把文档指针一起保存在各个不带Doc的视中,同时在该文档中保存各视的指针。3、重载各个不带Doc的视的OnDraw,并把该函数的GetDocument()的两行去掉而使用自己的m_pMyDoc;这时你的工作已经完成一半了。4、为保证更新同步,你还得再做一点点工作。5、你不能直接使用UpdateAllViews来更新。6、自定义void CMyDocument::MyUpdateAllViews(CView* pView){//假设Doc中保存有三个CView的指针CView* CMyDocument::m_pView[3]for(int i=0;i<3;i++){if(m_pView[i]!=pView)pView->Invalidate();}}7、当某个视中修改数据后,m_pMyDoc->MyUpdateAllViews(this)来保证更新的同步。 vc ado 读取mysql图片(blod)字段不正确 RichEdit显示GIF CPU高 一个最最简单的UDP聊天程序,书上例子,调试有问题,帮忙看看!! 开发FTP服务器端 关于用户界面线程 ?[询问可行性] 控制某程序的自定义扩展菜单. 虚拟打印机? 老板催得紧!!怎样在View上显示一个用字符串变量供给路径的bitmap位图? 我的WIN2000在关闭IE页面时总是出现读盘的现象,好像很大的工作量? CIPAddressCtrl的问题,没明白,帮看看 从一个数据流中读内容的时候,我该怎么才能判断我读的内容是目录还是文件,我的意思是…… winsock 高手请进
仅仅是在view中自己切换
在这两个函数中调用GetDocument();这时你就可以画你想画的所有内容.当文档内容改变时调用UpdateAllViews(this)即可使所有视图同步更新.
把你所要画的内容放在CMainFrame 中;重载OnDraw(CDC* pDC)或OnPaint()
在这两个函数中: CMainFrame* pFrame==(CMainFrame*)AfxGetApp().m_hMainFrame;然后你就可以画你想画的所有内容了.你没有必要在view 中保存数据.在各个view中都保存有一分指向其他各view 的指针.当在一个view中修改数据时同时向各个view 发送Invalidate().这时放在CMainFrame 中的内容就好象Document 一样.
或者在CMainFrame中保存所有的view pointer.然后编一个UpdateAllViews().当在一个view中修改数据时同时向CMainFrame发送一个自定义消息,在CMainFrame 中响应该消息并调用自定义的UpdateAllViews().一个视不与Document联系是不能使用UpdateView的.
在切换view后,调用SetActivewView(),然后SetActivewView调用各个View的updateview()。在各个view中的updateview函数中,从指针得到另外一个view的数据,然后仅仅写在view的窗口中,view中没有这些数据。我想做的就是如何能够将这些数据update到view中。这段代码不是我写的,我也不想对架构做很大的改动
1、使用分割窗口,这方面的资料多如牛毛。
2、象VC的Workspace一样,你觉得如何?
如果还不行的话,再看下面:
1、先生成一个与文档相关联的视.
2、在该视的OnCreate中生成其他不带Document 的视,并把文档指针一起保存在各个不带Doc的视中,同时在该文档中保存各视的指针。
3、重载各个不带Doc的视的OnDraw,并把该函数的GetDocument()的两行去掉而使用自己的m_pMyDoc;这时你的工作已经完成一半了。
4、为保证更新同步,你还得再做一点点工作。
5、你不能直接使用UpdateAllViews来更新。
6、自定义void CMyDocument::MyUpdateAllViews(CView* pView)
{
//假设Doc中保存有三个CView的指针CView* CMyDocument::m_pView[3]
for(int i=0;i<3;i++)
{
if(m_pView[i]!=pView)pView->Invalidate();
}
}
7、当某个视中修改数据后,m_pMyDoc->MyUpdateAllViews(this)来保证更新的同步。