theApp.m_pDocManager->GetFirstDocTemplatePosition();
         CDocTemplate::GetFirstDocPosition();
没有用过,不过应该可以的吧.

解决方案 »

  1.   

    CWinApp::GetFirstDocTemplatePosition 
    CWinApp::GetNextDocTemplate
      

  2.   

    看看下面的图解文章
    http://www.ebook520.com/showbooktext.asp?id=2865
      

  3.   

    1)对于单文档中也可以加入多个文档模板,但是一般的开发就使用MDI方式开发
    多文档模板,其方法与上述视图的获取方法很接近,这里稍做解释,如果不清楚,
    请查阅MSDN.
    可以用CWinApp::GetFirstDocTemplatePostion获得应用程序注册的第一个文档模板
    的位置;利用该值来调用CWinApp::GetNextDocTemplate函数,获得第一个
    CDocTemplate对象指针。 POSITION GetFirstDocTemplate( ) const; 
    CDocTemplate *GetNextDocTemplate( POSITION & pos ) const;
    第二个函数返回由pos 标识的文档模板。POSITION是MFC定义的一个用于迭代或对象指针检索的值。通过这两个函数,应用程序可以遍历整个文档模板列表。如果被检索的文档模板是模板列表中的最后一个,则pos参数被置为NULL。
     12)一个文档模板可以有多个文档,每个文档模板都保留并维护了一个所有对应文
    档的指针列表。 
    用CDocTemplate::GetFirstDocPosition函数获得与文档模板相关的文档集合中第一
    个文档的位置,并用POSITION值作为CDocTemplate::GetNextDoc的参数来重复遍历与模板相关的文档列表。函数原形为:
    viaual POSITION GetFirstDocPosition( ) const = 0; 
    visual CDocument *GetNextDoc(POSITION & rPos) const = 0;  
    如果列表为空,则rPos被置为NULL. 
     13)在文档中可以调用CDocument::GetDocTemplate获得指向该文档模板的指针。
    函数原形如下: CDocTemplate * GetDocTemplate ( ) const; 
    如果该文档不属于文档模板管理,则返回值为NULL。
      

  4.   

    CXXApp* pApp=(CXXApp*)AfxGetApp();//得到应用程序指针
    POSITION p=pApp->GetFirstDocTemplatePosition();//得到第一个文档模板
    while(p!=NULL)//遍历文档模板
    {CDocTemplate* pDocTemplate=pApp->GetNextDocTemplate(p);
    POSITION p1=pDocTemplate->GetFirstDocPosition();//得到文档模板对应的第一个文档
    while(p1!=NULL)//遍历文档模板对应的文档
    {CDocument* pDocument=pDocTemplate->GetNextDoc(p1);
    POSITION p2=pDocument->GetFirstViewPosition();//得到文档对应的第一个视图
    while(p2!=NULL)//遍历文档对应的视图
    {CView* pView=pDocument->GetNextView(p2);
    }}}