编写MFC程序时,使用edit控件可以实时显示变量的值,但有时在调试中,还是喜欢使用控制台print的方法。今天参考了http://www.cnblogs.com/gadfly/archive/2010/10/02/1841197.html文章中提到的方法,成功地把console window加入到MFC程序中。以下是具体方法:
1.我们可以自己创建一个命令行窗口,在主程序的初始化的时候调用AllocConsole()函数。相应的退出的时候调用FreeConsole():
BOOL CMFCTestApp::InitInstance() { ... #ifdef _DEBUG AllocConsole(); #endif ... CWinApp::InitInstance(); }
这里有一个问题是:FreeConsole()这个函数在哪里添加?此外,原文中提到需要使用_cprintf()来把信息输出到console上,可是我在实际使用中,使用std::cout和printf都可以输出console。另外_cprintf不知道是在哪个header里的函数。
2. 修改工程的配置信息,一般控制程序类型的是通过这两/SUBSYSTEM:WINDOWS来配置的,这个可以在工程属性/Linker/System/Subsystem这里看到,我们可以通过修改程序为console类型来使得程序显示命令行,但直接修改这个属性会提示链接错误,原因是不同类型的程序有不同的程序入口。这里使用简单的方式,直接在stdafx.h中添加一句:
#ifdef _DEBUG #pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup" )//我用VS2010 #endif
这样我们就可以把想观察的信息输出到console上了