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