VC++ 中用来调试和输出 console 信息的工具
/********************************************************************
创建日期: 2004/09/02
文件名称: DBWindow.h
作者: 袁桂芳(Fangrn)
版本: 2.0
邮箱: fangrn@163.com
创建目的:
用VC MFC/DLL编程时通常Debug版需要将测试信息通过控制台输出,而
编译成Release版时需要将这些输出调试信息的代码给注释掉,通
常这些代码较多操作比较麻烦。
这个程序的作用就是为了程序员在进行MFC/DLL软件开发时Debug版可以
在一个单独的控制台窗口进行调试程序的输出,而做成Release版时
不必手工将这些代码注释掉,由此程序自动完成。
注意:在一个进程之内只存在一个控制台窗口,对于多个可能同时调试的DLL
请用颜色识别。
版权声明:
您可以随意拷贝和使用这个程序的副本,但请保证所有文件的完整和
不被修改,如果您有修改意见,请与作者联系。
*********************************************************************/
#ifndef _DBWINDOW_
#define _DBWINDOW_
#include <windows.h>
//控制台输出时的文本颜色
#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 COMDLL_EXPORTS
//设置控制台输出窗口标题
BOOL DBWindowTile(LPCTSTR tile);
//格式化文本输出
BOOL DBWindowWrite(LPCTSTR fmt,...);
//带颜色格式化文本输出
BOOL DBWindowWrite(WORD Attrs,LPCTSTR fmt,...);
#else
#define DBWindowTile
#define DBWindowWrite
#endif
#endif
/********************************************************************
创建日期: 2004/09/02
文件名称: DBWindow.cpp
作者: 袁桂芳(Fangrn)
版本: 2.0
邮箱: fangrn@163.com
创建目的:
用VC MFC/DLL编程时通常Debug版需要将测试信息通过控制台输出,而
编译成Release版时需要将这些输出调试信息的代码给注释掉,通
常这些代码较多操作比较麻烦。
这个程序的作用就是为了程序员在进行MFC/DLL软件开发时Debug版可以
在一个单独的控制台窗口进行调试程序的输出,而做成Release版时
不必手工将这些代码注释掉,由此程序自动完成。
注意:在一个进程之内只存在一个控制台窗口,对于多个可能同时调试的DLL
请用颜色识别。
版权声明:
您可以随意拷贝和使用这个程序的副本,但请保证所有文件的完整和
不被修改,如果您有修改意见,请与作者联系。
*********************************************************************/
#include "stdafx.h"
#include "DBWindow.h"
#ifdef COMDLL_EXPORTS
#include <tchar.h>
#include <stdio.h>
#include <stdarg.h>
#define CONSOLE_TILE _T("DBWindow Ver 2.0 by Fangrn")
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
分享到:
相关推荐
VC调试常见错误 程序设计到多线程,VC++6.0默认设置可作以下修改: project->settings->C/C++->Category中选Code Generation->Use Run-time Library选Debug MultiThreaded或MultiThreaded 在创建MFC项目时, 不使用...
use vc++ 6 Console link to SQL 2000
函数型计算器(VC++6.0,Win32 Console)程序由 yu_hua 于2007-07-27设计完成 功能:目前提供了10多个常用数学函数: ⑴正弦sin ⑵余弦cos ⑶正切tan ⑷开平方sqrt ⑸反正弦arcsin ⑹反余弦arccos ⑺反正切arctan...
mfc实现大型程序事调试程序是比较困难的,尤其是对运行时间很长的程序,在mfc中利用控制台输入程序信息,知道程序的运行状态。
本文给大家分享了用VC++实现console程序显示彩色文本。
网络设备console调试软件SecureCRT-6.2.0-Portable(交换机、路由器)
loopback-console, 用于环回应用调试和管理的命令行 工具 环回控制台用于环回应用调试和管理的命令行工具。 是一个命令行工具,用于与你的应用程序交互。 它类似于内置的node,但在调试或者通常在你的应用环境中工作...
qrcode2console:链接生成二维码输出到console或者是二维码图片输出到console
谷歌浏览器console调试,有了它,开发前端的速度可提升一倍以上谷歌浏览器console调试,有了它,开发前端的速度可提升一倍以上
使用eclipse(PDT PHP Development Tools Project)类型的开发工具做PHP开发或者二次开发时,非寻常郁闷的就是调试(debug)的时候不能像其他语言一样在控制台(console) 输出消息,必须得打开网页使用echo或者var_dump等...
Unity界面显示Console工具,可以在Editor或者Android下查看查看输出的Log,非常方便,需要使用时直接拖预制体到Hierarchy面板上即可,unity5.X版本之前的会报错
WPF控制台输出文本,可以将控制台隐藏,也可以将控制台显示。
使用STM32cubeIDE 调试F103芯片,uart3串口printf输出信息
有些网站会用console来检测是否打开了F12(开发者工具),所以直接hook console 对象 让所有输出失效,已达到过检测的目的。 2、基于pushState的卡浏览器 有些网站会不停的往Chrome缓存里塞东西(多见于sojson和...
银行管理系统VC++版本,console界面。。。。。。。。。。。。。。。
点击alloylever按钮之间切换显示或隐藏工具面板Console会输出所有用户打印的日志如console.[log/error/info/debug/debug]Console会输出所有的错误信息(脚本错误和网络请求错误)XHR面板会输出所有(XMLHttpRequest)...
RJ45专用console驱动 Z特 PL2303通用版 里面包括windows linux 等等适配版本 USB To RJ45调试线console控制线_PL2303
Firebug内置一个console对象,提供5种方法,用来显示信息。 最简单的方法是console.log(),可以用来取代alert()或document.write()。比如,在网页脚本中使用console.log("Hello World")...
js检测用户是否打开调试工具(chrome) (function(){ var re=/x/; var i=0; console.log(re); re.toString=function(){ window.close(); return '第'+(++i)+'次打开控制台'; } })(); JavaScript检测是否开启了...
大部分都只是用php think test进行启动,但是对于想调试test控制器的中的逻辑,则没办法写参数,我看了源码,稍微改进一点点,可以用ide进行调试console