m_dlg->Create(ID_***, GetDesktopWindow());
...
m_dlg->ShowWindow(SW_SHOW);>>>>>>>>
我已经试过以下:(都不行)
m_dlg->SetWindowPos(&topwndmos, ....)
m_dlg->BringWndToTop()
m_dlg->SetActiveWindow()请勿再提供相同解法,谢谢!

解决方案 »

  1.   

    你说的不行过于绝对。SetWindowPos是可以的,你可以增加一个函数
    //***********************************************
    void CXXXXXDlg::OnAlwaysOnTop()
    {
    ::SetWindowPos(GetSafeHwnd(), (m_bAlwaysOnTop) ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // Check/uncheck the menu item
    CMenu *pSysMenu = GetSystemMenu(FALSE);
    if(pSysMenu != NULL)
    {
    UINT nFlags = MF_BYCOMMAND | ((m_bAlwaysOnTop) ? MF_CHECKED : MF_UNCHECKED);
    pSysMenu->CheckMenuItem(IDM_ALWAYS_ON_TOP, nFlags);
    }
    }
      

  2.   

    只能说你setwindowpos用法有问题
      

  3.   

    SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);以上肯定可以用:)。仔细看看MSDN,SetWindowPos很好用。还可以SetForegroundWindow()
      

  4.   

    HWND_TOPMOST是永久
    HWND_TOP暂时 
    还有楼上
    SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
    是错误的
    SetWindowPos(&CWnd::wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
    正确
      

  5.   

    ::SetWindowPos(GetSafeHwnd(), HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
      

  6.   

    setwindowpos就是不可以,楼上的关于SetWindowPos或::SetWindowPos我都试过了,却是不行
    SetForegroundWindow()倒似乎可以