www.delmang.com 의 "맨이 (textout@empal.com)" 님이 올리신 팁인데요.
빌더로 바꾸었습니다.
바꾸었다고는 하지만 워낙에 델파이랑은 닮아 있기도 하고 API기반의 팁이라
몇자 바꾸지도 않았네요..-,.-;
//Header의 내용..
private: // User declarations
HANDLE ConHwnd;//콘솔의 핸들.
public: // User declarations
void __fastcall ConsoleLoad(void);
void __fastcall ConsoleWriteLn(String Str);
//Cpp파일의 내용.
//콘솔을 로드하는 함수.
void __fastcall TForm1::ConsoleLoad(void)
{
_COORD SBSize;
ConHwnd = CreateConsoleScreenBuffer(GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CONSOLE_TEXTMODE_BUFFER,
NULL );
SBSize.X = 80;
SBSize.Y = 1000;
SetConsoleScreenBufferSize(ConHwnd, SBSize);
SetConsoleActiveScreenBuffer(ConHwnd);
}
//콘솔에 쓰는 함수.
void __fastcall TForm1::ConsoleWriteLn(String Str)
{
DWORD Chars;
SetConsoleTextAttribute(ConHwnd , 10);
Str = Str + "\r\n";
WriteConsole(ConHwnd, Str.c_str(), Str.Length(), &Chars, NULL);
}
//사용예..:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AllocConsole();
ConsoleLoad();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
FreeConsole();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
String Str;
Str = "X:" + IntToStr(X) + " Y:" + IntToStr(Y);
ConsoleWriteLn(Str);
}
|