我正在寻找一种在我的程序中隐藏控制台(在 Windows 中)的方法,并且我发现了以下代码:
#if defined (__WIN32__)
#include <windows.h>
HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd, SW_HIDE);
#endif
但是,codeblocks 不断给我错误:预期的构造函数、析构函数或“(”标记之前的类型转换
。我做错了什么?
在 mac 和 linux 中隐藏控制台的代码是什么?我不经常使用 mac 或 linux,但我想让我的程序独立于平台。有没有适用于所有平台的代码?编译时控制台是否会在 mac 和 linux 中显示?
最佳答案
一般来说,控制台应用程序不应该弄乱它们的窗口。如果您需要更高级的东西(显示/隐藏窗口,决定其大小,...)您可能应该切换到 GUI 应用程序。即使您只是不想要任何窗口,这也是正确的:创建 GUI 应用程序而不创建窗口。
在 Mac 和 Linux 上,启动可执行文件时默认不显示控制台(GUI 和控制台可执行文件之间没有区别);如果您在终端中启动它,应用程序对其没有太多控制权(除非它使用转义码,但它们用于控制文本格式/定位)。您可以使用一些启发式方法来猜测所使用的终端模拟器并告诉它隐藏,但它很丑陋、很麻烦,而且再次违背了控制台应用程序的目的。
就您的代码片段而言,您不能将 #include
放入函数体内:您应该将其分成两部分:
在文件顶部:
#ifdef __WIN32__
#define _WIN32_WINNT 0x0500
#include <windows.h>
#endif
函数体内:
#ifdef __WIN32__
ShowWindow(GetConsoleWindow(), SW_HIDE);
#endif
关于c++ - 程序运行时隐藏控制台的独立于平台的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727709/