一个单文档多视图的SDI,利用拆分窗口同时显示。
 如何在一个视图改变后,重画另一个视图?
   高手帮忙啊,谢谢!!!

解决方案 »

  1.   

    思路:1,他们公用相同的文档。在文档中保存画图数据。
    2,视图画图的数据来源于文档,而不是自身定义的。
    3,简单的办法,将画图操作放在OnPaint中,那么一个视图修改后,可以简单调用pOtherView ->Invalidate()来实现。
      

  2.   

    2,补充一下,视图修改的数据都是文档定义的。所以在OnPaint(->OnDraw)中获取数据应该也从文档。可以看看向导在OnDraw中第一句话就是GetDocument,所以doc/view结构的初衷就是数据在文档,操作在视图。一个视图修改文档数据后,另外的试图可以在OnDraw中得到最新的文档数据而进行正确的操作。
      

  3.   

    我现在把试图重画放在了ondraw函数中了,不过怎么得到其他视图的指针以调用它的ondraw呢。感谢enoloo(努力COM)的回答,pOtherView ->Invalidate()中的potherview是指的什么啊。谢谢!!!
      

  4.   

    在考虑上下文的情况下,可以用其他的方法来访问需要的对象
    连接到同一个文档的视图之间的访问,以及从文档访问视图,推荐的方式是使用http://msdn.microsoft.com/library/en-us/vccore98/HTML/_core_drawing_in_a_view.asp这里的方式,使用CDocument::UpdateAllViews,传递自定义的Hint来和视图通讯。
      

  5.   

    在一个view中,我怎么调用文档类下的函数啊
       高手继续帮忙啊!!
      

  6.   

    pOtherView ->Invalidate(),
    pOtherView另外一个视图的指针,你要同步的视图。
      

  7.   

    蒋斑竹的连接很值得一看。 楼上的方法其实,CDocument::UpdateAllViews调用每个视图的OnUpdate。CView::OnUpdate调用了Invalidate().CView::OnUpdate是个需函数,可以把更新放在这个函数里面。
      

  8.   

    enoloo(努力COM),,我怎么得到另外一个视图的指针?