您的位置:首页 > 产品设计 > UI/UE

一个简单的将GUI程序的log信息输出到关联的Console窗口中(AllocConsole SetConsoleTitle WriteConsole 最后用ShowWindow(GetConsoleWindow)进行显示)

2016-10-26 20:51 776 查看
[cpp] view plain copy

// .h 文件

#pragma once

class CConsoleDump

{

public:

explicit CConsoleDump(LPCTSTR lpszWindowTitle = NULL);

virtual ~CConsoleDump(void);

public:

BOOL DUMP(LPCTSTR lpszFmt, ...);

BOOL ShowWindow(BOOL bShowWindow);

BOOL SetWindowText(LPCTSTR lpszWindowTitle = NULL);

};

// .cpp文件

#include "StdAfx.h"

#include "ConsoleDump.h"

#define MAX_BUFFER_SIZE (10 * 1024)

CConsoleDump::CConsoleDump(LPCTSTR lpszWindowTitle)

{

if(AllocConsole())

{

if(NULL != lpszWindowTitle)

{

SetConsoleTitle(lpszWindowTitle);

}

}

}

CConsoleDump::~CConsoleDump(void)

{

FreeConsole();

}

BOOL CConsoleDump::ShowWindow(BOOL bShowWindow)

{

return ::ShowWindow(GetConsoleWindow(), bShowWindow ? SW_SHOW : SW_HIDE);

}

BOOL SetWindowText(LPCTSTR lpszWindowTitle)

{

if(NULL != lpszWindowTitle)

{

return SetConsoleTitle(lpszWindowTitle);

}

return TRUE;

}

BOOL CConsoleDump::DUMP(LPCTSTR lpszFmt, ...)

{

TCHAR szText[MAX_BUFFER_SIZE] = {0};

va_list arglist;

va_start(arglist, lpszFmt);

_vstprintf_s(szText, _countof(szText), lpszFmt, arglist);

va_end(arglist);

return WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), szText, _tcslen(szText), NULL, NULL);

}

// 测试使用

CConsoleDump m_dump; // 定义为类的成员变量

// 需要的地方利用CConsoleDump::DUMP函数输出log信息即可

m_dump.DUMP(_T("Hello, World!\r\n"));

这只是个简单的封装了Console相关的几个函数,关于更多的Console相关的控制,可以参考MSDN文档中的
http://blog.csdn.net/visualeleven/article/details/7628564
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐