找到那个窗口的指针或者句柄,用SetWindowPos(),
::SetWindowPos(hWnd, &wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);

解决方案 »

  1.   

    setActiveView
    别忘了给分:)
      

  2.   

    同意 jerrytse(聪明笨伯)的观点
      

  3.   

    是MDI吗?问题好像说的不明白
      

  4.   

    y97523szb() 的说法是正确的只要用setActiveView就可以了,问题在于怎样在选中菜单时,显示相应的对话框;
    我写了个小程序来实现了这个过程,现在简要说明如下:1.通过OnBTNAdd来增加对话框,并将对话框名增加到菜单中,给菜单一个命令号
    2.当选择对话框的选取菜单时,就会触发函数OnChildDlgMsg,它有个参数来指出触发这个函数的消息,通过这个参数数你就能知道该显示激活哪一个对话框;///////定义
    #define  WM_CHILD_DLG_MSG (WM_USER + 0X100)
    typedef struct ChildDlgInfotag {
        CChildDlg *pChildDlg;
        UINT uID;
    }ChildDlgInfo;/////消息映射
    ON_COMMAND_RANGE(WM_CHILD_DLG_MSG, WM_CHILD_DLG_MSG + 1000, 
    OnChildDlgMsg)
    //////增加对话框的函数
    void CDialogSelView::OnBTNAdd() 
    {
        ChildDlgInfo *pchild_dlg_info = new ChildDlgInfo;
        CChildDlg *pchild_dlg = new CChildDlg;    pchild_dlg->Create(CChildDlg::IDD, this);    CString str;
        static s_DlgNum = 1;
        str.Format("Dialog%d", s_DlgNum);    pchild_dlg->SetWindowText(str);
        pchild_dlg->CenterWindow(NULL);
        pchild_dlg->ShowWindow(SW_SHOW);    pchild_dlg_info->pChildDlg = pchild_dlg;
        pchild_dlg_info->uID = s_DlgNum;    m_nCurDlg = m_pChildDlgArray.Add(pchild_dlg_info);    CWnd *pmain_wnd = AfxGetMainWnd();
        CMenu *pmain_menu = pmain_wnd->GetMenu();
        CMenu *psub_menu = pmain_menu->GetSubMenu(0);
        psub_menu->AppendMenu(MF_STRING ,WM_CHILD_DLG_MSG+s_DlgNum,str);    s_DlgNum++;
    }
    /////////消息响应函数
    void CDialogSelView::OnChildDlgMsg(UINT uID)
    {
       int size = m_pChildDlgArray.GetSize();

       ChildDlgInfo *pchild_dlg_info;   for (int i = 0; i < size; i++)
       {
           pchild_dlg_info = m_pChildDlgArray.GetAt(i);
           UINT id = uID - WM_CHILD_DLG_MSG;
           if (pchild_dlg_info->uID == id)
           {
                pchild_dlg_info->pChildDlg->ShowWindow(SW_SHOW);
                pchild_dlg_info->pChildDlg->SetActiveWindow();
                break;
            }
       }
    }