当前位置:网站首页>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);
优点就是可以直接打印信息,缺点则是打印出来的东西在"输出窗口"中,感觉总没有控制台那么好。

边栏推荐
- Install visual studio 2019 steps and vs2019 offline installation package on win7
- 雷达成像 Matlab 仿真 1 —— LFM信号及其频谱
- 【服务器使用记录】通过跳板机登录远程服务器并进行文件传输
- Trouble encountered in cable testing -- a case study of a manufacturer?
- USB network native driver for esxi updated to support esxi7.0.1
- Perl入门学习(十)格式化输出
- set_ false_ path
- MATLAB signal processing
- Pycharm2019 set editor theme and default code
- What happens when MySQL tables change from compressed tables to ordinary tables
猜你喜欢

ASP. Net read database bound to treeview recursive mode

PyTorch 学习笔记 3 —— DATASETS & DATALOADERS & TRANSFORMS

clickhouse聚合之探索聚合内部机制

set_multicycle_path

set_ case_ analysis

Overall understanding of PLC

Triode design, understanding saturation, linear region and cut-off region

ConNeXt

Measure computer battery capacity

Pytorch learning note 4 - automatic calculation of gradient descent autograd
随机推荐
Install visual studio 2019 steps and vs2019 offline installation package on win7
How to test industrial Ethernet cables (using fluke dsx-8000)?
clickhouse建宽表多少列最合适?
Matlab simulation of radar imaging 1 - LFM signal and its spectrum
clickhouse聚合之内存不足怎么办?那就提升聚合性能
An example of bill printing
Perl入门学习(十)格式化输出
Web scrolling subtitles (marquee example)
福禄克DSX2-5000、DSX2-8000模块如何找到校准到期日期?
PT physical aware based on multi voltage
MAE 掩码自编码是可扩展的学习
Fluke dtx-1800 and its accessories dtx-cha002 channel adapter channel replacement RJ45 socket notes
Best practices to ensure successful deployment of Poe devices
What about the insufficient memory of Clickhouse aggregation? Then improve the polymerization performance
Low power design isolation cell
Low power design -power switch
Monitor the CPU temperature of raspberry pie 4B installed with esxi on ARM
Trouble encountered in cable testing -- a case study of a manufacturer?
set_ case_ analysis
低功耗设计-isolation cell