Независимые от платформы способы скрытия консоли при запуске программы
Я ищу способ скрыть консоль (в Windows) в моей программе, и я нашел этот код:
#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 при компиляции?
1 ответ
В общем случае консольные приложения не должны связываться с их окном. Если вам нужны более сложные вещи (показать / скрыть окно, определить его размер, ...), вам, вероятно, следует переключиться на приложение с графическим интерфейсом. Это справедливо, даже если вы просто не хотите никакого окна: создайте приложение с графическим интерфейсом и не создавайте окна.
В Mac и Linux консоль по умолчанию не отображается при запуске исполняемого файла (и нет различия между графическим интерфейсом и исполняемыми файлами консоли); если вы запускаете его в терминале, приложение не имеет большого контроля над ним (если оно не использует escape-коды, но они должны управлять форматированием / позиционированием текста). Вы можете использовать некоторую эвристику, чтобы угадать используемый эмулятор терминала и сказать ему, чтобы он скрывался, но это уродливо, громоздко и, опять же, побеждает назначение консольного приложения.
Что касается вашего фрагмента кода, вы не можете поместить это #include
внутри тела функции: вы должны разбить этот материал на две части:
В верхней части файла:
#ifdef __WIN32__
#define _WIN32_WINNT 0x0500
#include <windows.h>
#endif
внутри тела функции:
#ifdef __WIN32__
ShowWindow(GetConsoleWindow(), SW_HIDE);
#endif