К сожалению, просто установив FreeConsole () в качестве первой функции в main, окно все равно может появиться на мгновение. А FreeConsole удаляет окно, так что если вы хотите использовать его позже (как при уничтожении процесса), вы должны заставить его появиться на экране в режиме вне вашего контроля.
Windows позволяет программам Win32 иметь только один из четырех контекстов в Visual Studio: оконная программа с начальным окном GUI, консольная программа с начальным окном консоли, DLL или Lib. Изменение подсистемы на неконсольный выбор из проекта-> Свойства-> Системное представление приводит только к связыванию проблем, которые блокируют сборку.
Вот то, что сработало для меня с небольшим усилием. Используйте подход Майка выше и выберите Win32 Project с Windows Application. Затем удалите все в WinMain после направления «Поместите код здесь» и удалите все вызываемые функции. Верните true или 1, как вы хотите от WinMain. Ни одно окно любого типа не появится при запуске.
И когда вы готовы работать с консольным окном, вызовите AllocConsole () в своем коде и по своему усмотрению определите его расположение и размер. Консоль можно расположить вне экрана и, если хотите, вывести на экран; это займет всего несколько минут, чтобы получить представление о функциях настройки. Начните с «Консольных функций» Microsoft в документах MSDN. К сожалению, нет книги о том, как правильно использовать все функции, как в NCurses в Linux.