在MFC程序中增加控制台

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

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

 BOOL CMFCTestApp::InitInstance()
 {
     ...
 #ifdef _DEBUG
     AllocConsole();
  #endif
     ...
     CWinApp::InitInstance();
 }

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

 

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

#ifdef _DEBUG
#pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup" )//我用VS2005
#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*/

 

最好最简单的办法:

在任何构造函数中加入如下代码

if(::AllocConsole())
{
freopen("CONOUT$", "w", stdout); 

freopen( "CONIN$", "r", stdin);
}

 

相应的退出的时候调用FreeConsole()

 

 

获取更多帮主请关注小程序

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值