在MFC程序中增加控制台

MFC程序中,如果想要输出调试信息,我们一般都是TRACE或者使用LOG文件,都不是很方便,第一个需要我们在调试状态下,第二个也要配置麻烦而且不直观。而使用Console来显示调试信息应该是更好的选择。下面介绍几种在MFC程序中,使用控制台来输出调试信息。

1. 我们可以自己创建一个命令行窗口,在主程序的初始化的时候调用AllocConsole()函数。相应的退出的时候调用FreeConsole()

 

 
  
1 BOOL CMFCTestApp::InitInstance()
2 {
3 ...
4 #ifdef _DEBUG
5 AllocConsole();
6   #endif
7 ...
8 CWinApp::InitInstance();
9 }

  此种方式下,输出函数需要使用_cprintf或者WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE)...),其他的如cout,printf都不能输出到这里。当然,你可以自己封装一套调试函数。

 

2. 修改工程的配置信息,一般控制程序类型的是通过这两/SUBSYSTEM:WINDOWS来配置的,这个可以在工程属性/Linker/System/Subsystem这里看到,我们可以通过修改程序为console类型来使得程序显示命令行,但直接修改这个属性会提示链接错误,原因是不同类型的程序有不同的程序入口。这里使用简单的方式,直接在stdafx.h中添加一句

 

 
  
1 #ifdef _DEBUG
2 #pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup" ) //我用VS2005
3 #endif

我们重新定义了系统类型和入口函数,这里面可以根据自己的需要任意组合。你可以参考你工程目前的属性信息,工程属性/Linker/Command Line,如下参考

 

#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )

#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )

 

PS如何改变Win32 Console 程序显示颜色

 
 
代码
 
   
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
/*
STD_INPUT_HANDLE 标准输入的句柄 STD_OUTPUT_HANDLE 标准输出的句柄 STD_ERROR_HANDLE 标准错误的句柄
*/
SetConsoleTextAttribute(hCon,ForeColor
| BackGroundColor);
/* 其文本与背景颜色可以是 FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY */



 


End:顺祝国庆快乐~

转载于:https://www.cnblogs.com/gadfly/archive/2010/10/02/1841197.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值