RT,如何判断文件已经打开,不需要再重新打开,并将打开的文件置顶呢?谢谢!

解决方案 »

  1.   

    CFrameWnd* pFrame = ((CMainFrame*)AfxGetMainWnd())->GetActiveFrame();
    if(pFrame)
    {
    pFrame->ShowWindow(SW_SHOWMAXIMIZED);
    }
      

  2.   

    遍历子框架窗口
    CMainFrame* pMainFrame = ((CMainFrame*)AfxGetMainWnd());
    CMDIChildWnd* pFirstFrame = pMainFrame->MDIGetActive();
    CMDIChildWnd* pFrame = pMainFrame->MDIGetActive();
    do
    {
    CString str;
    pFrame->GetWindowText(str);
    AfxMessageBox(str); pMainFrame->MDINext();
    pFrame = pMainFrame->MDIGetActive();
    }while(pFirstFrame != pFrame);
      

  3.   

    比较正规的是你通过App类指针得到文档模板,然后通过文档模板得到文档类指针,再通过文档类得到视图类,最后通过视图类得到它的父窗口GetParent();这个就是子框架窗口了
      

  4.   


        CMainFrame* pMainFrame = ((CMainFrame*)AfxGetMainWnd());
        CMDIChildWnd* pFrame = pMainFrame->MDIGetActive();
        while(NULL != pFrame);
        {
            CString str;
            pFrame->GetWindowText(str);
            AfxMessageBox(str);        pMainFrame->MDINext();
            pFrame = pMainFrame->MDIGetActive();
        }
       pFrame 是空怎么也进循环呢 
      

  5.   

    囧,你可以自己先判断一下嘛CMainFrame* pMainFrame = ((CMainFrame*)AfxGetMainWnd());
        CMDIChildWnd* pFirstFrame = pMainFrame->MDIGetActive();
        CMDIChildWnd* pFrame = pFirstFrame;
    if(pFrame)
    {
    do
    {
    CString str;
    pFrame->GetWindowText(str);
    AfxMessageBox(str);

    pMainFrame->MDINext();
    pFrame = pMainFrame->MDIGetActive();
    }while(pFirstFrame != pFrame);
    }
      

  6.   


    非常感谢  但我有两个问题
    1. 为什么while判断不出来NULL呢?
    2. 为什么我用这样的代码不能设置断点呢?把红色的去掉就可以设置    CMainFrame* pMainWnd = (CMainFrame*) AfxGetMainWnd();
        CMDIChildWnd* pMDIChild = pMainWnd->MDIGetActive();   //得到当前的子窗口
        CMDIChildWnd* pMDIChildFirst = pMainWnd->MDIGetActive();   //得到当前的子窗口
        while (NULL != pMDIChild)
        {
            CString strTitle = _T("");
            pMDIChild->GetWindowText(strTitle);
            if (strFilePath == strTitle)
            {
                return;
            }
            pMainWnd->MDINext();
            pMDIChild = pMainWnd->MDIGetActive();
            if (pMDIChildFirst == pMDIChild)
            {
                break;
            }

        }
      

  7.   

        CMainFrame* pMainWnd = (CMainFrame*) AfxGetMainWnd();
        CMDIChildWnd* pMDIChild = pMainWnd->MDIGetActive();   //得到当前的子窗口
        CMDIChildWnd* pMDIChildFirst = pMainWnd->MDIGetActive();   //得到当前的子窗口
        while (NULL != pMDIChild)
        {
            CString strTitle = _T("");
            pMDIChild->GetWindowText(strTitle);
            if (strFilePath == strTitle)
            {
                return;
            }
            pMainWnd->MDINext();
            pMDIChild = pMainWnd->MDIGetActive();
            if (pMDIChildFirst == pMDIChild)
            {
                break;
            }

        }
      

  8.   

    1. 为什么while判断不出来NULL呢?
    2. 为什么我用这样的代码不能设置断点呢?把红色的去掉就可以设置
    等待一会就结贴了  根本问题解决了 但出现的问题不理解