我正在寻找一种在我的程序中隐藏控制台(在窗口中)的方法,并且我发现了这段代码:
#if defined (__WIN32__)
#include <windows.h>
HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd, SW_HIDE);
#endif
然而,代码块不断给我error: expected constructor, destructor, or type conversion before '(' token
。我做错了什么?
什么是在mac和linux中隐藏控制台的代码?我不经常使用mac或linux,但我想让我的程序平台独立。是否有适用于所有平台的代码?在编译时,控制台是否会显示在mac和linux中?
答案 0 :(得分:4)
通常,控制台应用程序不应该弄乱它们的窗口。如果您需要更高级的东西(显示/隐藏窗口,确定其大小,......),您应该切换到GUI应用程序。即使您不想要任何窗口也是如此:创建GUI应用程序而不创建窗口。
在Mac和Linux上,当您启动可执行文件时,默认情况下不显示控制台(GUI和控制台可执行文件之间没有区别);如果你在终端中启动它,应用程序对它没有多少控制(除非它使用转义码,但它们是控制文本格式/定位)。您可以使用一些启发式方法来猜测所使用的终端模拟器,并告诉它隐藏,但它很丑,很麻烦,并且再次违背了控制台应用程序的目的。
就您的代码片段而言,您不能将#include
放在函数体中:您应该将这些内容分成两部分:
位于文件顶部:
#ifdef __WIN32__
#define _WIN32_WINNT 0x0500
#include <windows.h>
#endif
在函数体内:
#ifdef __WIN32__
ShowWindow(GetConsoleWindow(), SW_HIDE);
#endif