如何在运行时打开控制台 [C++/Visual Studio]

How to open Console during runtime [C++/Visual Studio]

本文关键字:C++ Visual Studio 控制台 运行时      更新时间:2023-10-16

目前,我正在使用Visual Studio开发SDL应用程序。 现在,如果我想打开控制台以查看输出,则必须输入">链接器>系统>子系统>控制台的项目属性"才能启用它。但是,当我准备好导出时,我会禁用它。

但是,我想知道在运行时是否可以打开(甚至关闭)控制台窗口。具体来说,我希望能够在应用程序运行时按下一个键,以便打开控制台并查看输出。

我尝试使用windows.h中的AllocConsole,但是虽然它确实打开了一个控制台窗口,但它似乎没有显示每当我手动将应用程序设置为使用控制台窗口时通常出现的输出。

(或者,我一直在想我可以打开第二个 SDL 窗口并在那里显示所有输出,但我不知道如何将所有输出从应用程序流式传输到自身。可能不是最方便的解决方案,但也可以工作。

您可以使用

if (::GetConsoleWindow() == NULL)
{
if (::AllocConsole())
{
(void)freopen("CONIN$", "r", stdin);
(void)freopen("CONOUT$", "w", stdout);
(void)freopen("CONOUT$", "w", stderr);
SetFocus(::GetConsoleWindow());
}
}

在使用printf之前