[英]C++ bring console window to the front
我用c ++編寫了一個小計時器程序,一旦計時器用完,我希望控制台窗口在Windows中彈出到前台以顯示“完成”消息。 我讀到有關使用“ SetForegroundWindow(hwnd)”的信息,該功能正是我從Visual Studio運行代碼時想要的,但是當我構建發行版並從VS外部運行exe時,不會彈出控制台窗口,而是它在系統任務欄中的圖標閃爍。 任何想法為什么會這樣? 我已經在64位Windows 7和10上對其進行了測試,並且都做了相同的事情。
在大多數情況下,只要正確還原窗口,就可以使用SetForegroundWindow
。 有時系統可能會拒絕該請求( 請參閱文檔 ),通常有充分的理由,您不應該嘗試覆蓋系統。 如果SetForegroundWindow
失敗,則您仍然可以使用備份選項,在該選項中,任務欄中的閃爍按鈕將向用戶發出警報。
void show(HWND hwnd)
{
WINDOWPLACEMENT place = { sizeof(WINDOWPLACEMENT) };
GetWindowPlacement(hwnd, &place);
switch(place.showCmd)
{
case SW_SHOWMAXIMIZED:
ShowWindow(hwnd, SW_SHOWMAXIMIZED);
break;
case SW_SHOWMINIMIZED:
ShowWindow(hwnd, SW_RESTORE);
break;
default:
ShowWindow(hwnd, SW_NORMAL);
break;
}
SetWindowPos(0, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
SetForegroundWindow(hwnd);
}
int main()
{
HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, SW_SHOWMINIMIZED);
//Test: manually click another window, to bring that other window on top
Sleep(5000);
//this window should restore itself
show(hwnd);
system("pause");
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.