[英]MFC/C++ Bring window to top no longer works
我有一個基於 MFC/C++ 構建的 32 位應用程序。 它從 Visual C++ (6.0) 移植到 Studio 2015。
當新數據出現時,應用程序需要到達頂部。 在我的幾個客戶系統上,window 沒有出現在前面,因為另一個應用程序似乎想保持在最前面。 此代碼(在 MainFrm.cpp 中)在 2015 年端口(相同的“最頂層”源代碼)之前運行良好。
...
HWND hCurrWnd;
int iMyTID;
int iCurrTID;
hCurrWnd = ::GetForegroundWindow();
iMyTID = GetCurrentThreadId();
iCurrTID = GetWindowThreadProcessId(hCurrWnd,0);
::AttachThreadInput(iCurrTID, iMyTID, TRUE);
::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
::SetWindowPos(m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
::SetForegroundWindow(m_hWnd);
::SetFocus(m_hWnd);
::SetActiveWindow(m_hWnd);
::AttachThreadInput(iCurrTID, iMyTID, FALSE);
...
是否有另一種更強大的方法可以將 window 強制到 MFC 的頂部?
直接使用 MFC 函數,而不是底層 WinApi。我在 Win10 和 VS2019 中測試了這個。
RESULT CMainFrame::OnNewDataReceived_UM( WPARAM wParam, LPARAM lParam )
{
:
if (IsIconic())
ShowWindow(SW_RESTORE);
SetForegroundWindow();
:
}
returen TRUE;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.