窗口不能通过SetWindowPos(&wndTopMost, 0, 0, 0, 0,SWP_NOSIZE | SWP_NOMOVE);
一直在处于最前端;
当窗口在后台的时候,当收到某些信息,要把自己显示到最前端;
该如何实现;
SetActiveWindow();
SetForegroundWindow();
使用这些函数好像都不能实现;
谢谢;

解决方案 »

  1.   

    BringWindowToTop
    只能把窗口放到最前端,不能激活窗口!!
      

  2.   

    BringWindowToTop
    试过了 
    但是不能放到最前端
      

  3.   

    ShowWindow(SW_SHOW),不行么?
    曾经因为皮肤的问题写过这样的代码,看对你有用不: m_dlgXXXX.SetWindowPos(
    &wndTopMost,
    ::GetSystemMetrics(SM_CXSCREEN)/2-rect.Width()/2,
    ::GetSystemMetrics(SM_CYSCREEN)/2-rect.Height()/2,
    rect.Width(), 
    rect.Height(), 
    SWP_SHOWWINDOW);

    m_dlgXXXX.SetWindowPos(
    &wndNoTopMost,
    ::GetSystemMetrics(SM_CXSCREEN)/2-rect.Width()/2,
    ::GetSystemMetrics(SM_CYSCREEN)/2-rect.Height()/2,
    rect.Width(), 
    rect.Height(), 
    SWP_SHOWWINDOW);
      

  4.   

    试试这段代码void PlacedWindowTop(CWnd* pWnd)
    {
       ASSERT_VALID(pWnd);
       ASSERT(::IsWindow(pWnd->m_hWnd));
       
       if(pWnd->IsIconic())
          pWnd->ShowWindow(SW_RESTORE);
       else if(pWnd->IsWindowVisible())
          pWnd->SetForegroundWindow();
       else
          pWnd->ShowWindow(SW_SHOW);
    }
      

  5.   

    当窗口在后台的时候,当收到某些信息,要把自己显示到最前端;
    ------------------
    当窗口在后台的时候,这是什么意思,隐藏了吗?如果设置wndTopMost属性,窗口隐藏后直接用ShowWindow(SW_SHOW)就可显示出来.
      

  6.   

    曾经写控制台程序时用到的always on top的方法:
    CRect rect;
    GetWindowRect(&rect);
            
    ::SetWindowPos(GetSafeHwnd(), HWND_NOTOPMOST,rect.left, rect.top, 
                rect.right-rect.left, rect.bottom-rect.top,
                SWP_SHOWWINDOW   );
      

  7.   

    SetWindowPos或者CWnd *pWnd = CWnd::FindWindow(NULL, _T("XXX") );
    pWnd->ShowWindow(SW_RESTORE);
    pWnd->SetForegroundWindow();
      

  8.   

    SetWindowPos(&wndTopMost , -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE);
      

  9.   

    窗口不设置wndTopMost属性;
    在后台就是他不是当前激活的窗口 被其他窗口覆盖了;
      

  10.   

    ShowWindow( SW_SHOWNORMAL);
    SetActiveWindow();
    SetForegroundWindow();
    BringWindowToTop()
    都没效果
    只有用SwitchToThisWindow(m_hWnd,TRUE);有一些效果,但是效果不好;