定义Console.h
#pragma once
#include "windows.h"
// CConsole
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
static LPVOID pthis = NULL;
class CConsole : public CWnd
{
DECLARE_DYNAMIC(CConsole)
public:
static CConsole * GetInstance();
private:
CConsole();
HANDLE hOutput;
HANDLE hInput;
DWORD cNum;
public:
virtual ~CConsole();
void Write(char*);
void WriteString(CString);
char* Read();
protected:
//CConsole *pthis;
//DECLARE_MESSAGE_MAP()
};
实现 Console.cpp
// Console.cpp : 实现文件
//
#include "stdafx.h"
#include "Console.h"
// CConsole
IMPLEMENT_DYNAMIC(CConsole, CWnd)
CConsole::CConsole()
{
FreeConsole();
AllocConsole();
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
hInput = GetStdHandle(STD_INPUT_HANDLE);
}
CConsole * CConsole::GetInstance()
{
if(!pthis)
{
//isInit=TRUE;
pthis=(CConsole*)new CConsole();
return (CConsole*)pthis;
}
else
{
return (CConsole*)pthis;
}
}
void CConsole::Write(char *str)
{
if(pthis)
{
WriteConsole(hOutput,str,lstrlenA(str),&cNum,NULL);
}
}
void CConsole::WriteString(CString str)
{
if(pthis)
{
WriteConsole(hOutput,str.GetBuffer(),lstrlen(str.GetBuffer()),&cNum,NULL);
}
}
char * CConsole::Read()
{
char *buf=new char[1024];
if(pthis)
{
ReadConsole(hInput,(void*)buf,1024,&cNum,NULL);
return buf;
}
return NULL;
}
CConsole::~CConsole()
{
CloseHandle(hOutput);
CloseHandle(hInput);
FreeConsole();
}
//BEGIN_MESSAGE_MAP(CConsole, CWnd)
//END_MESSAGE_MAP()
//CConsole 消息处理程序