MFC应用代码
+ -

Win32窗口程序自定义控制台输出

2021-08-30 85 0

习惯了使用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);
              setlocale(LC_ALL, "chs");//#include <locale.h>
          //freopen_s(&fp, "CONIN$", "r+t", stdout);
          //freopen_s(&fp, "CONOUT$", "w+t", stdout);
          printf("hello\n");
      }
      else
      {
          fclose(fp);
          ::FreeConsole();
      }
  }

0 篇笔记 写笔记

Win32窗口程序自定义控制台输出
习惯了使用printf之类的控制台输出,而在以winmain入口的用户界面程序中要调试输出很不方便。当然,微软也提供了 OutputDebugString的函数让大家使用,但是,使用OutputDebugString的成本也很高。首先各个函数只支持字符串输出,你想输出个变量也得自己格式化,再调用。其......
Windows设备控制台Devcon.exe简介
什么是DevConDevCon是一个控制台工具,可以用来DevCon来启用、禁用、安装、配置和删除设备。DevCon版本区分DevCon.exe根据平台的不同,分为x86,x64和Arm32,ARM64版本。x86:只能安装Windows32位操作系统x86/x64处理器上。x64:只能安装W......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

您的支持,是我们前进的动力!