我正在研究一种消息传递工具。消息窗口是整个应用程序的一部分。当有消息传来时,我需要把窗口移到前面。我正在使用此代码:

    if( m_hwnd == NULL || !::IsWindow(m_hwnd) )
        return E_UNEXPECTED;

    if(::IsIconic(m_hwnd))
    {
        ::ShowWindowAsync( m_hwnd, SW_RESTORE );
    }
    ::SetWindowPos(m_hwnd, HWND_TOP, 0, 0, 0, 0, SWP_ASYNCWINDOWPOS | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
    ::SetForegroundWindow(m_hwnd);
    if( pvbProcessed != NULL )
        *pvbProcessed = VARIANT_TRUE;

    return S_OK;

我什至尝试做一个TOPMOST,但在某些情况下它仍然不起作用。
我也试过::BringToFront()。

任何人都可以帮助或解释为什么它不起作用?这是一个已知的微软限制。

最佳答案



有关更多详细信息,请参阅 SetForegroundWindow() docs

关于c++ - Win32::SetForegroundWindow() 一直不工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19136365/

10-13 04:21