您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页MFC控制台输出类

MFC控制台输出类

来源:华佗养生网
/******************************************************************** 创建日期: 2004/09/02 文件名称: DBWindow.h

作者: 刘磊(vietor) 版本: 2.0

邮箱:*******************

创建目的:

用VC MFC/DLL编程时通常Debug版需要将测试信息通过控制台输出,而 编译成Release版时需要将这些输出调试信息的代码给注释掉,通 常这些代码较多操作比较麻烦。

这个程序的作用就是为了程序员在进行MFC/DLL软件开发时Debug版可以 在一个单独的控制台窗口进行调试程序的输出,而做成Release版时 不必手工将这些代码注释掉,由此程序自动完成。

注意:在一个进程之内只存在一个控制台窗口,对于多个可能同时调试的DLL 请用颜色识别。 版权声明:

您可以随意拷贝和使用这个程序的副本,但请保证所有文件的完整和 不被修改,如果您有修改意见,请与作者联系。

*********************************************************************/

#ifndef _DBWINDOW_ #define _DBWINDOW_

#include

//控制台输出时的文本颜色

#define WDS_T_RED FOREGROUND_RED

#define WDS_T_GREEN FOREGROUND_GREEN #define WDS_T_BLUE FOREGROUND_BLUE //控制台输出时的文本背景颜色

#define WDS_BG_RED BACKGROUND_RED

#define WDS_BG_GREEN BACKGROUND_GREEN #define WDS_BG_BLUE BACKGROUND_BLUE

#ifdef _DEBUG

//设置控制台输出窗口标题

BOOL DBWindowTile(LPCTSTR tile); //格式化文本输出

BOOL DBWindowWrite(LPCTSTR fmt,...); //带颜色格式化文本输出

BOOL DBWindowWrite(WORD Attrs,LPCTSTR fmt,...);

#else

#define DBWindowTile #define DBWindowWrite

#endif

#endif

###############DBWindow.cpp################

/******************************************************************** 创建日期: 2004/09/02 文件名称: DBWindow.cpp

作者: 刘磊(vietor) 版本: 2.0

邮箱:*******************

创建目的:

用VC MFC/DLL编程时通常Debug版需要将测试信息通过控制台输出,而 编译成Release版时需要将这些输出调试信息的代码给注释掉,通 常这些代码较多操作比较麻烦。

这个程序的作用就是为了程序员在进行MFC/DLL软件开发时Debug版可以 在一个单独的控制台窗口进行调试程序的输出,而做成Release版时 不必手工将这些代码注释掉,由此程序自动完成。

注意:在一个进程之内只存在一个控制台窗口,对于多个可能同时调试的DLL 请用颜色识别。 版权声明:

您可以随意拷贝和使用这个程序的副本,但请保证所有文件的完整和 不被修改,如果您有修改意见,请与作者联系。

*********************************************************************/

#include \"stdafx.h\"

#include \"DBWindow.h\"

#ifdef _DEBUG

#include #include #include

#define CONSOLE_TILE _T(\"DBWindow Ver 2.0 by LiuLei\")

class ConsoleWindow {

public:

ConsoleWindow();

virtual ~ConsoleWindow();

BOOL SetTile(LPCTSTR lpTile);

BOOL WriteString(LPCTSTR lpString);

BOOL WriteString(WORD Attrs,LPCTSTR lpString); private:

HANDLE m_hConsole; BOOL m_bCreate; BOOL m_bAttrs;

WORD m_OldColorAttrs; };

ConsoleWindow::ConsoleWindow() {

m_hConsole=NULL; m_bCreate=FALSE; if(AllocConsole()) {

m_hConsole=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTitle(CONSOLE_TILE);

SetConsoleMode(m_hConsole,ENABLE_PROCESSED_OUTPUT); m_bCreate=TRUE; } else{

m_hConsole=GetStdHandle(STD_OUTPUT_HANDLE); if(m_hConsole==INVALID_HANDLE_VALUE) m_hConsole=NULL; }

if(m_hConsole) {

CONSOLE_SCREEN_BUFFER_INFO csbiInfo;

if(GetConsoleScreenBufferInfo(m_hConsole, &csbiInfo)) {

m_bAttrs=TRUE;

m_OldColorAttrs = csbiInfo.wAttributes; } else{

m_bAttrs=FALSE; m_OldColorAttrs = 0; } } }

ConsoleWindow::~ConsoleWindow() {

if(m_bCreate) FreeConsole(); }

BOOL ConsoleWindow::SetTile(LPCTSTR lpTile) {

return SetConsoleTitle(lpTile); }

BOOL ConsoleWindow::WriteString(LPCTSTR lpString) {

BOOL ret=FALSE; if(m_hConsole) {

ret=WriteConsole(m_hConsole,lpString,_tcslen(lpString),NULL,NULL); }

return ret; }

BOOL ConsoleWindow::WriteString(WORD Attrs,LPCTSTR lpString) {

BOOL ret=FALSE; if(m_hConsole) {

if(m_bAttrs)SetConsoleTextAttribute(m_hConsole,Attrs);

ret=WriteConsole(m_hConsole,lpString,_tcslen(lpString),NULL,NULL); if(m_bAttrs)SetConsoleTextAttribute(m_hConsole,m_OldColorAttrs); }

return ret; }

ConsoleWindow ConWindow;

#define MAX_BUF_LEN 4096

BOOL DBWindowTile(LPCTSTR tile) {

return ConWindow.SetTile(tile); }

BOOL DBWindowWrite(LPCTSTR fmt,...) {

TCHAR message[MAX_BUF_LEN]; va_list cur_arg;

va_start(cur_arg,fmt);

_vsntprintf(message,MAX_BUF_LEN,fmt,cur_arg); va_end(cur_arg);

return ConWindow.WriteString(message); }

BOOL DBWindowWrite(WORD Attrs,LPCTSTR fmt,...) {

TCHAR message[MAX_BUF_LEN]; va_list cur_arg;

va_start(cur_arg,fmt);

_vsntprintf(message,MAX_BUF_LEN,fmt,cur_arg); va_end(cur_arg);

return ConWindow.WriteString(Attrs,message); }

#endif

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务