当前位置:网站首页>MFC 使用控制台打印程序信息
MFC 使用控制台打印程序信息
2022-07-28 05:24:00 【小土同学!】
在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();//释放控制台资源

注意:生成的exe程序打开时也会自动打开控制台,发行程序时要记得把打开和关闭控制台的代码都注释掉
当然,MFC本身也集成了相应的宏"TRACE"来实现这个功能。示例如下:
TRACE("x = %d and y = %x and z = %f\n", 1, 2, 3);
优点就是可以直接打印信息,缺点则是打印出来的东西在"输出窗口"中,感觉总没有控制台那么好。

边栏推荐
猜你喜欢

ConNeXt

权重衰减 weight decay

Transformer self attention mechanism and complete code implementation

Low power design -power switch

Beta分布(概率的概率)

ICC2(三)Clock Tree Synthesis

Low power design isolation cell

Beta distribution (probability of probability)

Talking about fluke optical cable certification? What is CFP? What is OFP?

IMS-FACNN(Improved Multi-Scale Convolution Neural Network integrated with a Feature Attention Mecha
随机推荐
Word邮件合并功能详解:合并后生成多个word文档,删除空白页
How can fluke dsx2-5000 and dsx2-8000 modules find the calibration expiration date?
Systemmediasize startup option added in esxi 7.0 update 1C
Perl入门学习(八)子程序
PLC的选型
MATLAB signal processing
Machine learning note 5 - logistic regression
ClickHouse 中的公共表表达式CTE
How to calibrate dsx2-8000? Calibration process?
TCL and eltcl? Cdnext and CMRL?
Matlab simulation of radar imaging 1 - LFM signal and its spectrum
In asp Usage of cookies in. Net
机器学习笔记 5 —— Logistic Regression
基于 YOLOV5 的 SAR 图像舰船检测
mixup_ratio
Distinguishing PCB quality by color is a joke in itself
clickhouse建宽表多少列最合适?
EfficientNET_ V1
Photovoltaic power generation system MPPT maximum power point tracking
Create a basic report using MS chart controls