【问题标题】:Displaying Output on the Console Issue在控制台问题上显示输出
【发布时间】: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 上将应用程序作为后台进程启动时,我经常看到这种情况发生。
  • 是的,一旦应用程序启动,输入提示就会显示。

标签: c++ mfc console


【解决方案1】:

改用这个字符串:

CString dump = "\n\nThis is test comment\n";

【讨论】:

    【解决方案2】:

    也许这可以解决您的问题:

    转到 Project>Project Properties>Linker>System 并在右侧窗格中,将 SubSystems 选项设置为 Console(/SUBSYSTEM:CONSOLE)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      相关资源
      最近更新 更多