请问下在MDI下的MainFrame中可以获取指定的Doc类指针吗?就是说可能打开了多个文档,但我在MainFrame中要找到指定的文档,这些文档都是由同一模板建立的,那标题是不一样,可否找到某一标题的doc指针及view指针?谢谢!

解决方案 »

  1.   

    每个doc应该有个唯一标识,我的程序的每个doc/view装载的背景图不同,所以我就用背景的文件名做标识。
      

  2.   

    GetFirstDocPosition、GetNextDoc遍历文档,逐个GetTitle,找到文档后再GetFirstViewPosition、GetNextView遍历视图。
      

  3.   

    遍历吧,取得所有doc,然后挨个取标题进行匹配,文档对应视图也是类似操作
      

  4.   


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

  5.   

    MFC应用程序中指针的使用
      

  6.   


    CSceDoc * pOpenDoc = NULL;// 假设CSceDoc为你的Doc类
    CDocTemplate * pTemplate = ((CSceApp *)AfxGetApp())->pDocTemplate;//假设CSceApp为你的App
    CSceView * pOpenView = NULL;
    POSITION pos = pTemplate->GetFirstDocPosition();while (pos)
    {
    pOpenDoc = (CSceDoc *)pTemplate->GetNextDoc(pos); if (pOpenDoc != NULL &&
    pOpenDoc->m_strTitle == strTitle)
    {
    POSITION pos1 = pOpenDoc->GetFirstViewPosition();
    while (pos1)
    {
    pOpenView = pOpenDoc->GetNextView(pos1); CMDIChildWnd* childWnd = (CMDIChildWnd*)pView->GetParent();
    childWnd->BringWindowToTop();
    }
    return TRUE;
    }
    }
      

  7.   

    补充一下    if (pOpenDoc != NULL &&
            pOpenDoc->m_strTitle == strTitle)改成    if (pOpenDoc != NULL &&
            pOpenDoc->GetTitle()== strTitle)//strTitle 是你要找的标题
      

  8.   


    CMainFrame* pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;
    CMDIChildWnd* pActiveChild = pMain->MDIGetActive();
    CXXXDoc* pDocument = (CXXXDoc*)pActiveChild->GetActiveDocument();