1.在单文档应用程序中,视图对象,文档对象,窗口框架对象,都是动态创建的(用new),但是动态创建后他们返回的指针都到哪里去了?我单步跟踪过,只知道窗口框架对象动态创建后返回的指针被保存到了CWinThread类中的m_pMainWnd.而其他的2个到哪里去了????2.还有窗口框架对象应该可以管理多个视图对象的,他应该是通过链表来管理的,但是在CFrameWnd中并没有发现有关视图对象的链表????

解决方案 »

  1.   

    在“CSingleDocTemplate”这个对象里面。然后再通过App的“AddDocTemplate”函数加入到应用程序里面去的。自己在App::InitInstance()函数里面下个断点,按F11单步跟踪一下就清楚了。
      

  2.   

    http://blog.csdn.net/thankall/archive/2008/08/05/2770590.aspx楼主可看一看。想仔细了解的话,看jjhou的深入浅出MFC里的document/view结构。
      

  3.   

    to 3楼:
    “CSingleDocTemplate”这个对象里面只是存放了这3个对象的CRuntimeClass,并没有存放他们动态创建的对象.
    to 2楼:
     代码太多了,函数调用的深度太深了,很难看啊,有没有明白人指教一下
      

  4.   

    《深入了解MFC中的文档视结构》不错,网上随意搜搜。链表不用进去了解详细的结构,看下文章中
    (二)、了解与文档/视结构有关的各种类之间的关系
    模板=》框架、文档、视的关系和查找定位(提供了操作链表的接口),还是介绍得很详细了。
      

  5.   


    那就介绍你看class CDocManager(\MFC\Include\AFXWIN.H)很过瘾模板怎么个操作的巨细都有,希望别看吐血……
      

  6.   


    那就介绍你看class CDocManager(\MFC\Include\AFXWIN.H)很过瘾模板怎么个操作的巨细都有,希望别看吐血……
      

  7.   

    CFrameWnd类中用CView* m_pViewActive保存活动视图的指针。
    CView类中用CDocument* m_pDocument保存文档的指针。
    CDocument类中用CPtrList m_viewList保存各个视图的指针。
      

  8.   

    9 楼正解。顺便说一下, Frame 中有所有打开的文档的信息,单文档 Frame 只管理一个文档对象,多文档 Frame 可以管理多个文档对象。每个文档对象可能有一个或者多个关联的视图,反过来,每个视图则关联着唯一的一个文档。
      

  9.   

    一个文档模板能管理多个文档,在CDocTemplate中可以找到 GetFirstDocPosition,说明是可以的,但是怎么找不到这个链表的数据成员呢?
      

  10.   

    GetFirstDocPosition是虚函数,在CMultiDocTemplate类中有CPtrList m_docList。
      

  11.   

    CWinApp::GetNextDocTemplate(POSITION& rPosition )
    CDocTemplate::GetNextDoc(POSITION& rPosition )
    CDocument::GetNextView(POSITION& rPosition )rPosition 返回下个链表对象的位置。循环调用,知道rPosition 为 NULL。
      

  12.   

    那么对于第二个问题,窗口框架对象是否可以管理多个视图对象,在CFrameWnd中也没有发现有关视图对象的链?