假设在 MDI 程序中打开了3个文档,现在想将其中一个文档提到前面显示,不知道这要怎么做?不明白的说

解决方案 »

  1.   

    //pDoc为该文档,并假设它只关联到一个视图
    CDocument *pDoc;
    CFrameWnd *pWnd;
    //1. 取得该文档的视图
    POSITION pos = pDoc->GetFirstViewPosition();
    if (pos != NULL)
    {
          CView* pView = GetNextView(pos);
    }   //2.设置为当前的活动视图
    pWnd->SetActiveView( pView ,  TRUE );
      

  2.   

    将其他的视图隐藏,要的文档显示,即可。将其他的视图隐藏
    void CLeftPanView::HideWnd()
    {  
        PtrList::iterator it;
    for (it = windowList.begin(); it != windowList.end(); ++it) {
            suspWindow *winhide = (suspWindow *) *it;
            int wintype=winhide->whatype();
    if(wintype==WIN_SEND_MESSAGE){
    CSendMsgDlg *sendDlg= (CSendMsgDlg *) winhide;
             sendDlg->ShowWindow(SW_HIDE);
     }else if(wintype==WIN_VIEW_MESSAGE){
    CViewMsgDlg *recvDlg= (CViewMsgDlg *) winhide;
             recvDlg->ShowWindow(SW_HIDE);
     }else if(wintype==WIN_SEARCH_SUBJECT){
     CSearchSubject *SearchSubject=(CSearchSubject*)winhide;
     SearchSubject->MoveWindow(CRect(-500,-500,-500,-500));//DestroyWindow();
     }else if(wintype==WIN_SEARCH_SUBJECT_VIEWDETAIL){
     CSearchSubjectViewDetail *SVDetail=(CSearchSubjectViewDetail *)winhide;
         SVDetail->ShowWindow(SW_HIDE);
     }else if(wintype==WIN_ANNOUNCE_QUESTION){
     CAnounceQuestion *AnounceQuestion=(CAnounceQuestion *)winhide;
     AnounceQuestion->ShowWindow(SW_HIDE);
     }else if(wintype==WIN_NEW_QUESTION){
     CNewQuestion *NewQuestion=(CNewQuestion *)winhide;
     NewQuestion->MoveWindow(CRect(-500,-500,-500,-500));//>ShowWindow(SW_HIDE);
     }
     else if(wintype==WIN_START_SOLUTION){
                 CStartSolution *StartSolution=(CStartSolution *)winhide;
     StartSolution->ShowWindow(SW_HIDE);
     }
     else if(wintype==WIN_WELCOME_VIEW){
         CWelcomeView *WelcomeView=(CWelcomeView *)winhide;
     WelcomeView->ShowWindow(SW_HIDE);
     } }
    }
    要的文档显示
    pDlg->ShowWindow(SW_SHOW);
      

  3.   

    我的意思就是如下:
    在菜单Window中,不是有所打开文档的列表吗?当我点其中一个的时候,那个窗口就提前到前面来显示了,现在我就是需要这样的功能,不过不是在WINDOW菜单中,是在我自己的菜单中罢了
      

  4.   

    m_pXxryQueryFormView为你要显示的试图类指针
    CFrameWnd *pChidWnd = m_pXxryQueryFormView->GetParentFrame();
    if(pChidWnd )
    {
    MDIActivate(pChidWnd );
    }
      

  5.   

    wwwllg(wwwllg) :
    按照你的意思就是,假设我打开了三个文档,那么我必须设立一个有三个元素的数组来保存View指针?
    然后在用的时候采用你的方式?不知道你说的是不是这个意思?
    我最早想到的也是用数组来保存View指针,然后用的时候去显示,只是我觉得好像不合理一样,所以才来问问,看看是不是我想错了.
      

  6.   

    agree to ShangMuMu
      如果你是多个不同文档模板的话,可以通过文档模板注册的字符串来判断
      

  7.   

    我只有一个文档模板,每次都是开一个View,然后在View中建立一个表格.