Win32窗口程序控制台输出

习惯了使用printf之类的控制台输出,而在以winmain入口的用户界面程序中要调试输出很不方便。
当然,微软也提供了 OutputDebugString的函数让大家使用,但是,使用OutputDebugString的成本也很高。
首先各个函数只支持字符串输出,你想输出个变量也得自己格式化,再调用。
其次,就算输出了,你也得使用DebugView之类的函数来显示。但使用DebugView来看时,又经常混有别的进程的输出。
最后,你想走到那里调试,都得随身携带DebugView吗?

真是够折腾人的!!!

其实,控制台也是一个窗口,我们可以通过AllocConsole来创建一个即可,然后再打开标准的输入输出流文件句柄即可。

代码如下:

  void CTest::OnBnClickedButtonConsole()
  {
      static int i = 0;
      static FILE* fp = NULL;
      i++;
      if (i % 2)
      {
          ::AllocConsole();

          freopen_s(&fp, "CONOUT$", "w+t", stdout);
          //freopen_s(&fp, "CONIN$", "r+t", stdout);
          //freopen_s(&fp, "CONOUT$", "w+t", stdout);
          printf("hello\n");
      }
      else
      {
          fclose(fp);
          ::FreeConsole();
      }
  }
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!