c++ builder 控制台类 辅助调试

 //如果你想在调试窗口程序时有个控制台,方便调试,本文也许能解决你的烦恼。

//本程序调试通过。

//1.新建立个窗体程序,在画面上放3个按钮,button1,button2,button3.

//2.建立个类文件,将最下面的类文件粘贴过去。

//3.窗体的头文件里,添加这一行#include "Unit2.h"

//4.在窗体头文件里添加个TConsoleWindow类型的变量,比如TConsoleWindow  console;

//5.button1程序里添加如下:

   char str[200];
   console.Open();
   for (int i = 0; i < 1000; i++)
   {
    sprintf(str,"苹果%d\n",i);
    console.printf(str);
   }

//6.button2程序里添加如下:

 console.ClrScr();

//7.button3程序里添加如下

console.Close();

//8.运行程序,点击button1,打开控制台,并刷屏。button2,清屏,button3,关闭控制台。

//----------------------------------------------------------------------------------------------------------

//9.下面是个类文件

//TConsoleWindow.h

//---------------------------------------------------------------------------
#ifndef TConsoleWindowH
#define TConsoleWindowH
//---------------------------------------------------------------------------
#include <vcl.h>
//---------------------------------------------------------------------------
class TConsoleWindow
{
public:
    TConsoleWindow() { hCon=NULL; }
    ~TConsoleWindow() { Close(); }

    void Open(void);
    void Close(void);

    void Show(void);
    void Hide(void);
    DWORD printf(const char *f,...);
    void ClrScr(WORD c=FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    __property HANDLE Handle = { read = hCon };
private:
    HANDLE hCon;
};
//---------------------------------------------------------------------------
#endif


#include "TConsoleWindow  .h"
#include <Windows.h>

void CharToTchar (const char * _char, TCHAR * tchar)
{
    int iLength ;

    iLength = MultiByteToWideChar (CP_ACP, 0, _char, strlen (_char) + 1, NULL, 0) ;
    MultiByteToWideChar (CP_ACP, 0, _char, strlen (_char) + 1, tchar, iLength) ;
}
void TConsoleWindow::Open(void)
{
    if(!hCon)
    {
        AllocConsole();
        hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    }
}
//---------------------------------------------------------------------------
void TConsoleWindow::Close(void)
{
    if(hCon)
    {
        FreeConsole();
        hCon = NULL;
    }
}

//---------------------------------------------------------------------------

 void TConsoleWindow::Show(void)
 {
    ShowWindow(GetConsoleWindow(),SW_SHOW);;
 }

//---------------------------------------------------------------------------
 void TConsoleWindow::Hide(void)
 {
    ShowWindow(GetConsoleWindow(),SW_HIDE);
 }

//---------------------------------------------------------------------------
DWORD TConsoleWindow::printf(const char *f,...)
{
    HANDLE hStdout;
    DWORD dwChars;
    static TCHAR buf[500];
    CharToTchar (f, buf);
    int len = lstrlen(buf);
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    if (hStdout==INVALID_HANDLE_VALUE)
    {
        return -1;
    }
    WriteConsole(hStdout,buf,len,&dwChars,NULL);
    return 0;
}

//---------------------------------------------------------------------------
void TConsoleWindow::ClrScr(WORD c)
{
    DWORD nBytesWrite;
    CONSOLE_SCREEN_BUFFER_INFO ConInfo;
    GetConsoleScreenBufferInfo(hCon, &ConInfo);
    COORD CurPos = { CurPos.X = ConInfo.srWindow.Left, CurPos.Y = ConInfo.srWindow.Top };
    FillConsoleOutputAttribute(hCon, c, ConInfo.dwSize.X*ConInfo.dwSize.Y, CurPos, &nBytesWrite);
    FillConsoleOutputCharacter(hCon, 0, ConInfo.dwSize.X*ConInfo.dwSize.Y, CurPos, &nBytesWrite);
}
//---------------------------------------------------------------------------

//好了,现在是不是方便了很多。

//---------------------------------------------------------------------------

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值