核心 API
// 置頂
SetWindowPos(&wndTopMost, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW);
// 取消置頂
SetWindowPos(&wndNoTopMost, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW);
完整示例 (MFC 風格)
CRect rcMy;
::GetWindowRect(m_hWnd, &rcMy); // 獲取當前窗口位置大小
// 設為總在最前
SetWindowPos(&wndTopMost, rcMy.left, rcMy.top,
rcMy.Width(), rcMy.Height(), SWP_SHOWWINDOW);
// 取消總在最前
SetWindowPos(&wndNoTopMost, rcMy.left, rcMy.top,
rcMy.Width(), rcMy.Height(), SWP_SHOWWINDOW);
參數說明
hWndInsertAfter:HWND_TOPMOST (置頂) / HWND_NOTOPMOST (取消)。MFC 封裝為 &wndTopMost / &wndNoTopMost。
X, Y, cx, cy:位置與尺寸,保持原樣即可。
uFlags:SWP_SHOWWINDOW 顯示窗口;常配合 SWP_NOSIZE | SWP_NOMOVE 僅改變 Z 序。