簡體   English   中英

MFC/C++ Bring window to top 不再有效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM