【发布时间】:2011-05-21 09:45:45
【问题描述】:
我在一个 MFC 应用程序中工作,它在 GUI 模式下运行,用户可以从命令提示符运行。在 GUI 模式下,我工作正常。但是在命令提示符模式下,我使用 printf() 来显示错误,但命令提示符中没有任何内容。为了解决这个问题,我得到了函数 AttachConsole(ATTACH_PARENT_PROCESS) 来将内容显示到控制台。但是输出没有经过消毒,即如果我在命令行中运行应用程序,输出将如下所示
G:\Bin\conTest\Debug>conTest.exe
G:\Bin\conTest\Debug>This is test comment
Press any key to continue . . .
但我希望输出如下所示
G:\Bin\conTest\Debug>conTest.exe
This is test comment
Press any key to continue . . .
G:\Bin\conTest\Debug>
请帮我解决问题, 下面是代码sn-p
DWORD written;
if (AttachConsole(ATTACH_PARENT_PROCESS))
{
out = GetStdHandle (STD_OUTPUT_HANDLE);
}
CString dump = "This is test comment\n";
WriteConsole (out, (LPCTSTR) dump, dump.GetLength(), &written, 0);
system("pause");
FreeConsole();
【问题讨论】:
-
我猜该应用程序将自己作为后台进程,或者在某些时候相当于 Microsoft 的 fork。启动应用程序后是否会立即显示下一个输入提示?当我在 Linux 上将应用程序作为后台进程启动时,我经常看到这种情况发生。
-
是的,一旦应用程序启动,输入提示就会显示。