콘솔프로젝트외의 프로젝트에서 콘솔창 띄우기

설명 필요없을정도 이므로 소스로 대신함..
핸들을 릴리즈 해줘야한다든지는 잘 몰라서 그냥 둠..


console.h

class Console
{
private:
Console();

public:
static bool Alloc();
static bool Free();

static void Write(const char* fmt, ...);

private:
static HANDLE thread;
};

console.cpp


#include <cstdio>
using namespace std;
#include <windows.h>
#include "console.h"

void __stdcall ConsoleThread(void* p)
{
HANDLE input = GetStdHandle(STD_INPUT_HANDLE);
char buffer[1024];
DWORD len;
while (1)
{
ReadConsole(input, buffer, 1024, &len, 0);
// 입력에 따른 처리
}
}

HANDLE Console::thread = 0;

Console::Console()
{
*(int*)0 = 0;
}

bool Console::Alloc()
{
if (AllocConsole() != 0)
{
DWORD id;
thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ConsoleThread, 0, 0, &id);
if (thread)
return true;
}
return false;
}

bool Console::Free()
{
if (thread)
TerminateThread(thread, 0);
return FreeConsole() != 0;
}

void Console::Write(const char* fmt, ...)
{
char buffer[1024] = {0};
va_list va;
va_start(va, fmt);
vsprintf(buffer, fmt, va);
va_end(va);

HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD written = 0;
WriteConsole(output, buffer, (DWORD)strlen(buffer), &written, 0);
}

by kiho | 2005/08/08 02:18 | 프로그래밍 팁 | 트랙백 | 덧글(0)

트랙백 주소 : http://kiho.egloos.com/tb/450569
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶