C ++控制台应用程序总是在最前面?

不是在寻找:

  • 总是在另一个窗口上
  • 做任何forms的graphics用户界面(GUI) – 对话框等等

然而,我正在寻找一种方法来使我的简单C ++ 控制台应用程序始终保持在最前,
只是要清楚 – 我正在寻找一种方法如何做到这一点编程方式:)我努力寻找,但只发现了上述 – 我不想…

那么有没有办法如何使您的控制台应用程序始终在Windows上的C + +编程上?

PS:是的,有一个相同的标题存在的问题,但该问题的OP实际上是在寻找别的东西(键盘钩,…) – 所以答案是我的问题脱离主题。

解:

快速回答 =>查看@AlexanderVX 接受的答案

示例和解释 => 我的答案在下面

Solutions Collecting From Web of "C ++控制台应用程序总是在最前面?"

OP post中的链接是指Windows。

首先,您需要获取控制台窗口的句柄: https : //support.microsoft.com/kb/124103

或者更好更现代: GetConsoleWindow方式来获得控制台句柄。

那么你需要做一个简单的诀窍:

::SetWindowPos(hwndMyWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); ::ShowWindow(hwndMyWnd, SW_NORMAL); 

作为@ AlexanderVX的回答显示了一个快速的答案,我想也告诉你我的最终实施与适当的评论解释什么是:):

不要忘记设置Windows版本相同或大于0x0500并包括windows.h库:

 #define _WIN32_WINNT 0x0500 #include <windows.h> 

我已经把微型应用程序的例子 : http : //ideone.com/CeLQj3

解释示例:

 // GetConsoleWindow() => returns: // "handle to the window used by the console // associated with the calling process // or NULL // if there is no such associated console." HWND consoleWindowHandle = GetConsoleWindow(); if( consoleWindowHandle ){ cout << endl << "Setting up associated console window ON TOP !"; SetWindowPos( consoleWindowHandle, // window handle HWND_TOPMOST, // "handle to the window to precede // the positioned window in the Z order // OR one of the following:" // HWND_BOTTOM or HWND_NOTOPMOST or HWND_TOP or HWND_TOPMOST 0, 0, // X, Y position of the window (in client coordinates) 0, 0, // cx, cy => width & height of the window in pixels SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW // The window sizing and positioning flags. ); // OPTIONAL ! - SET WINDOW'S "SHOW STATE" ShowWindow( consoleWindowHandle, // window handle SW_NORMAL // how the window is to be shown // SW_NORMAL => "Activates and displays a window. // If the window is minimized or maximized, // the system restores it to its original size and position. // An application should specify this flag // when displaying the window for the first time." ); cout << endl << "Done."; } else { cout << endl << "There is no console window associated with this app :("; } 

参考文献:

PS:我想发布这个作为编辑@ AlexanderVX的答案,但大多数stackoverflow的评论者不知何故认为,“这种编辑背离了原来的意图的职位”…