如何在运行时打开控制台 [C++/Visual Studio]
How to open Console during runtime [C++/Visual Studio]
目前,我正在使用 Visual Studio 开发 SDL 应用程序。
现在,如果我想打开控制台以查看输出,我必须输入 "properties of the project > Linker > System > SubSystem > Console" 才能启用它。但是,当我准备好导出时,我将其禁用。
但是,我想知道是否有办法在运行时打开(甚至关闭)控制台 window。具体来说,我希望能够在应用程序 运行 时按下一个键,以便打开控制台并查看输出。
我尝试使用 windows.h
中的 AllocConsole
,但是虽然它确实打开了一个控制台 window,但它似乎没有显示通常在我手动设置时出现的输出应用程序使用控制台 window.
(或者,我一直在想我可以打开第二个 SDL window 并在那里显示所有输出,但我不知道如何将应用程序的所有输出流式传输到自身。可能不是最多方便的解决方案,但也可以。)
您可以使用
if (::GetConsoleWindow() == NULL)
{
if (::AllocConsole())
{
(void)freopen("CONIN$", "r", stdin);
(void)freopen("CONOUT$", "w", stdout);
(void)freopen("CONOUT$", "w", stderr);
SetFocus(::GetConsoleWindow());
}
}
就在使用之前printf
目前,我正在使用 Visual Studio 开发 SDL 应用程序。 现在,如果我想打开控制台以查看输出,我必须输入 "properties of the project > Linker > System > SubSystem > Console" 才能启用它。但是,当我准备好导出时,我将其禁用。
但是,我想知道是否有办法在运行时打开(甚至关闭)控制台 window。具体来说,我希望能够在应用程序 运行 时按下一个键,以便打开控制台并查看输出。
我尝试使用 windows.h
中的 AllocConsole
,但是虽然它确实打开了一个控制台 window,但它似乎没有显示通常在我手动设置时出现的输出应用程序使用控制台 window.
(或者,我一直在想我可以打开第二个 SDL window 并在那里显示所有输出,但我不知道如何将应用程序的所有输出流式传输到自身。可能不是最多方便的解决方案,但也可以。)
您可以使用
if (::GetConsoleWindow() == NULL)
{
if (::AllocConsole())
{
(void)freopen("CONIN$", "r", stdin);
(void)freopen("CONOUT$", "w", stdout);
(void)freopen("CONOUT$", "w", stderr);
SetFocus(::GetConsoleWindow());
}
}
就在使用之前printf