*************************************文章内容无意义,存档用****************************************
MFC程序中要输出调试信息基本只能用edit控件显示内容,比较麻烦。使用printf显示的做法如下:
【假设为对话框应用程序】
1、首先在CXXXDlg的初始化函数OnInitDialog的最前面增加如下代码:
#ifdef _DEBUG AllocConsole(); #endif如图所示:
2、然后在退出函数(对话框为OnOk函数)中添加代码:FreeConsole();
如何添加OnOk函数参考这里:http://blog.csdn.net/holybin/article/details/25446913。
3、最后修改工程的配置信息。一般是通过这个配置属性“/SUBSYSTEM:WINDOWS”来修改的,它在工程“属性”的“linker-System-Subsystem”中,如下图所示:
我们可以通过修改该项为“/SUBSYSTEM:CONSOLE”来使程序能够显示命令行,但是直接修改后会报链接错误,原因是不同类型的程序有不同的程序入口。所以简单点的做法是直接在头文件stdafx.h中添加如下代码【vs2005/2008均可以】:
#ifdef _DEBUG #pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup" ) #endif注意:这里的改法适用于vs2005和vs2008,对于不同的IDE具体要怎么改,参考项目“属性”中“Linker-Command line”中的内容,如下图所示(我这里是vs2008):
4、改完之后试试在OnInitDialog最后加一句printf:
【假设为单文档或者多文档应用程序】
做法与对话框类似。
1、在应用程序CXXXApp的InitInstance函数中添加如下代码:
#ifdef _DEBUG AllocConsole(); #endif如图所示:
2、在“类视图”中选择CXXXApp类,在属性页的“重写”中添加ExitInstance函数,如图所示:
3、在ExitInstance函数中添加FreeConsole();。如图所示:
4、同样滴在InitInstance最后加一句printf:
***************************************************************************
PS1:链接时提示“microsoft incremental linker已停止工作”的解决方法
vs2008出现“Microsoft Incremental Linker已停止工作”解决办法
PS2:有时候printf或者cout无法使用,此时需要将输出函数换成_cprintf(要添加所需的头文件#include<conio.h>,且注意编码)或者WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE)...)