【发布时间】:2013-10-09 07:34:41
【问题描述】:
我有一个基于 Windows 的应用程序。我使它适用于GUI Mode 和Console Mode。在GUI mode 或Console mode 中,我使用AttachConsole() 附加Console,以将输出打印语句显示到控制台。现在的挑战是,当我在console mode 或Command prompt 中使用它时,我不需要启动新控制台。
假设在命令提示符下,我将其运行为
d:\Project path > MyApp.exe consolemode**Enter**
然后由于Attachconsole(),它会打开另一个控制台。现在,当我禁用AttachConsole() 时,它不会打开新控制台,也不会在命令提示符中显示输出。但我的要求是在commandprompt 中显示输出,而不是在从 comamnd 提示符执行时调出新的控制台。
Myapp.cpp
Winmain()
{
....
...
AttachConsole();
cout << "Console Attached \n";
// Some more output
}
所以,当我从命令提示符运行 myapp.exe
d:\Project path > MyApp.exe consolemode**Enter**
它附加一个new console 并在新的控制台窗口中打印输出。现在我的要求是我需要禁用AttachConsole(); 并希望在命令提示符下查看输出。
Myapp.cpp
Winmain()
{
....
...
//AttachConsole(); //Now I an disabling console
cout << "Console Attached \n";
// Some more output
}
如果您查看上面的代码,我已禁用 AttachConsole()。现在想当我做,
d:\Project path > MyApp.exe consolemode**Enter**
输出将出现在命令提示符下。如下所示
d:\Project path > MyApp.exe consolemode **Enter**
Console Attached
....
...
d:\Project path >
请帮帮我
【问题讨论】:
-
你能提供一些最小的示例代码,演示问题吗?
-
@idji:我添加了更多输入,请检查
-
我的意思是一些可以编译和运行的代码来演示问题。这样的例子至少可以在你的机器上这样做。
-
我的猜测是,当您为以后的
Attach创建新的控制台对象时,您会弄乱默认输出。因此,在这种情况下,您还需要注释掉该行。 -
澄清一下:如果您从现有控制台启动程序并调用 AttachConsole(ATTACH_PARENT_PROCESS),您会得到一个新控制台吗?我希望 AttachConsole 会使用以前的控制台(如果存在)。
标签: c++ visual-studio-2010 visual-c++ mfc console