在MFC编程中,代码的调试一直不太直观。搞一个 MessageBox 来打印信息查看程序是否执行或执行是否有误,又或者是在程序中设断点都有不太方便的地方,特别是在需要获得多个信息的情况下更是不便。此外,MessageBox 在涉及到打印非 CString 格式的信息时还要用 CString 的 Format 函数进行格式转换,又给调试带来进一步的麻烦。综上,在MFC程序的调试阶段加入像WIN32控制台程序那样的控制台来打印程序信息显得直观又方便易用。下面,是在MFC程序中添加控制台程序的方法:

在对话框程序的初始化函数OnInitDialog()中(如果不是对话框程序,或者希望在子对话框中加入,只需将代码添加到相应的入口位置即可)加入如下代码:

::AllocConsole();//打开控件台资源
FILE *fp;
freopen_s(&fp,"CONOUT$", "w+t", stdout);//申请写,这个是针对VS2013版本的代码,在VS较为早期的版本比如VS2008中,可将freopen_s改为freopen,并将参数改为对应形式即可
        到此,程序在运行时就会打开一个控制台窗口等待输入,只要在程序中加入 printf(",,,,,,")  则可在控制台中打印出信息。

最后,要记得在程序关闭的地方调用如下函数关闭掉控制台程序,不然会导致程序无法正常关闭的悲剧。

本人是在对话框程序的 WM_CLOSE 消息响应函数中添加的:

FreeConsole();//释放控制台资源

当然,MFC本身也集成了相应的宏"TRACE"来实现这个功能。示例如下:

TRACE("x = %d and y = %x and z = %f\n", 1, 2, 3);
    优点就是可以直接打印信息,缺点则是打印出来的东西在"输出窗口"中,感觉总没有控制台那么好。

转载于:https://www.cnblogs.com/endenvor/p/9808630.html

MFC 使用控制台打印程序信息相关推荐

  1. 使用 MFC 编写打印程序

    摘要 本文首先介绍了利用MFC提供的文档视图框架来实现一个打印程序,实现打印预览,在此基础上,同时通过对MFC源代码的深入探讨,提出了利用该方法在对话框上用MFC实现打印功能,结果表明,利用MFC实现 ...

  2. MFC 打印调试 信息 OutputDebugString

    MFC 打印调试 信息 OutputDebugString F5 调试 f:\mfc_work\mfc_code_jack\data_struct_app\cstring_app\cstringtes ...

  3. golang-如何用全局参数打印程序运行信息

    更多好文关注 v.golang技术实验室 1.GOGC GOGC 用于控制GC的处发频率, 其值默认为100, 意为直到自上次垃圾回收后heap size已经增长了100%时GC才触发运行.即是GOG ...

  4. Android HAL层/native C程序打印栈信息方法

    在调试Android系统底层函数时,经常需要跟踪函数调用流程,特别在HAL层需要确定参数来源时.使用栈信息逆向跟踪可快速分析函数调用流程,结合使用addr2line工具.绘图工具可绘制函数关系图.本文 ...

  5. 3 打印崩溃信息以及输出崩溃Dump文件

    3.1 缘由 本来不想写这一小结的,感觉有点跳跃性,因为对WINSDK不熟悉会导致这一小节看起来有些云雾. 包括我本人,对这一块也是畏畏缩缩的查了半天MSDN.但是由于第2节中提到了打印堆栈信息,就想 ...

  6. linux c 打印错误信息error errno perror和strerror的区别

    1 perror  头文件:stdio.h  void perror(const char *msg);  它是基于errno的当前值,在标准错上产生一条出错信息,然后返回.  它先输出由msg字符串 ...

  7. STM32M CUBE实现printf打印调试信息以及实现单字节接收

    在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不能够直接使用的.必须做点对库函数的修改. 具体project下载地址: http://download.csdn.ne ...

  8. 如何在 SAP UI5 应用中集成第三方库 :一个在移动设备上查看 Web 应用打印调试信息的小技巧

    这是 Jerry 2021 年的第 43 篇文章,也是汪子熙公众号总共第 320 篇原创文章. 做 Web 开发的程序员,无论使用 SAP UI5,还是 Angular,React,Vue,每天都离不 ...

  9. 创建没有Document的MFC MDI应用程序

    程序源代码    效果,如图: 1) 创建一个MFC MDI应用程序,Wizard设置如图, 然后点Finish 2) CMyTreeView  在CMyTreeView中新增三个函数,显示些示例数据 ...

最新文章

  1. C++ stringstream 简化数据类型转换
  2. 玩转数据、拥抱智能 | 清华大学大数据能力提升项目宣讲会火热来袭
  3. Hdoj Minimize The Difference
  4. 【BZOJ2659】算不出的算式,打表找规律
  5. l360清零软件无响应_张店楼顶商业广告全面“清零”!城市“天际线”颜值再刷新...
  6. 树形打印lua table表
  7. 标记重复值删除重复值
  8. DC-DC转换器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. android7.1修改默认休眠时间为1分钟
  10. LowB三人组--选择排序原理和实现
  11. win10安装super-url出现编码错误解决方法
  12. 行走在前端路上的一些想法
  13. 湖北智禾网络科技:新卖家前期对电商和淘宝店铺具备哪些基本的认知
  14. blast2go centos mysql 5.7++ 安装报错ERROR 1819 (HY000) at line 4
  15. c语言 int类型转换为string类型
  16. docker容器添加自定义hosts
  17. 电源接反了烧电路怎么办?电源防反接技术讨论
  18. 翟欣欣微博发声解释“真相”
  19. Android仿微信聊天界面
  20. sdhc在emu验证中出现的问题

热门文章

  1. linux基础命令 sed
  2. ASP.NET MVC过滤器
  3. 【中文】Joomla1.7扩展介绍之eXtplorer(文件管理器)
  4. Git 修改 proxy,解决代理导致的代码无法 push 或 pull 的问题
  5. mynewt 编译环境搭建
  6. 必做作业2:目前比较火的直播软件调研
  7. MySQL基础之DML语句
  8. Vue 单文件元件 — vTabs
  9. 驱动学习 - 加载.卸载驱动
  10. jquery file upload 后台收到的文件名中文乱码, filename中文乱码