【问题标题】:C++ separate command line window?C++ 单独的命令行窗口?
【发布时间】:2011-08-13 11:24:06
【问题描述】:

所以我有一个 GUI 程序,由于某种原因它不允许我使用 printf() 进行调试。 当我使用 printf() 时,由于某种原因它没有进入 Visual Studio 调试器。

无论如何,我想制作自己的单独窗口,当 GUI 打开时打开, 并且基本上能够将信息输入该控制台并与之交谈。

例如:

void talk(std::string info){
//Add the value of info to the next line in the console
}

有人知道怎么做吗? 基本上创建一个命令行并与之交谈,以便我可以看到输出:

CommandLine c;
c.talk("hey!");

【问题讨论】:

标签: c++ console window


【解决方案1】:

您可以使用AllocConsole 创建控制台来创建控制台,然后显式写入(有几种方法,GetStdHandle 和文件写入都可以)。您也可以使用OutputDebugString 写入VS 输出窗口。

void makeConsole()
{
    AllocConsole();
    console = GetStdHandle(STD_OUTPUT_HANDLE);
}

void talk(std::string info)
{
    WriteFile(console, info.c_str(), info.length());  // To console
    OutputDebugString(info.c_str()); // To output window
}

(伪代码,功能可能不太对)

编辑: 如果您仅通过 talk 函数写入控制台,这将正常工作。如果您在整个代码中使用 printf/cout,您肯定希望使用 Ben 的方法(重复使用要简单得多)。

【讨论】:

    【解决方案2】:

    @peachykeen 有一半的解决方案。如果你想让printfcout 工作,试试这个:

    AllocConsole();
    freopen("CONOUT$", "w", stdout);
    

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2013-01-11
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多