在mulitdoc/view结构的程序中,如果我重载的CChileFrame::OnCreateClient()
其中我静态拆分了窗口,假设两个吧。每一个窗口用不同的view,显示同一份数据(比如说一个用文本(CtextView)显示,一个用图线(CGraphView)显示)。当在CMyDoc中拦截调用UpdateAllViews(NULL)时它会根据m_viewlist更新每一个所打开文档的子窗口。
我的问题是,这些子窗口已经被我静态拆分成了两个窗口,MFC是怎样调用这两个View的OnDraw()?

解决方案 »

  1.   

    在你的 csplitterwnd 创建 view 的时候,它会把 当前 的 doc
    挂接到 该 view 中,同时,view 也和 doc 连接了起来。UpdateAllViews 会触发 CView::OnUpdate() 
    CView::OnUpdate() 触发 CView::OnDraw()
      

  2.   

    CDoc、CView、CMDIChildWnd这三个窗口之间都有联系的,
    可以通过GetFirstView和GetNextView获取一个文档的所有的视。UpdateAllViews也就是相当于循的调用各视的Update。
      

  3.   

    楼上是不是这个意思:比如说我用两个ChildWnd打开了一份文档.xxx:1 xxx:2
    而在xxx:1 和xxx:2 中有分别有TextView 和 GraphView两个静态拆分的窗口。
    GetFirstView 得到 xxx:1的TextView,然后是xxx:1 的GraphView 接着是xxx2:TextView
    最后是xxx:2 GraphVIew?