2008년 05월 18일
[API] Windows 환경에서의 Console창 활용
윈도우즈 프로그램도 콘솔 프로그램과 마찬가지로 콘솔을 열어 사용할 수 있다.
[콘솔 열기와 닫기]
BOOL WINAPI AllocConsole(void); // 이 함수를 호출하는 프로세스에 콘솔을 할당한다. (콘솔 열기)
BOOL WINAPI FreeConsole(void); // 이 함수를 호출하는 프로세스를 콘솔로부터 떼어낸다. (콘솔 닫기)
[콘솔 읽기와 쓰기]
BOOL WINAPI ReadConsole(
__in HANDLE hConsoleInput, // 입력 핸들
__out LPVOID lpBuffer, // 입력 버퍼 -> 문자열
__in DWORD nNumberOfCharsToRead, // 입력 버퍼 크기(문자 단위)
__out LPDWORD lpNumberOfCharsRead, // 입력된 문자 수 -> 출력된 문자수를 반환해준다.
__in_opt LPVOID pInputControl // NULL
);
BOOL WINAPI WriteConsole(
__in HANDLE hConsoleOutput, // 출력 핸들
__in const VOID* lpBuffer, // 출력 버퍼
__in DWORD nNumberOfCharsToWrite, // 출력 문자 수
__out LPDWORD lpNumberOfCharsWritten, // 실제 출력된 문자 수
LPVOID lpReserved // NULL
);
[샘플 코드]
/*
wincon.c: 윈도우즈 프로그램에서 콘솔 사용하기
컴파일: cl wincon.c user32.lib
*/
#include <windows.h>
#include <tchar.h>
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmd, int iCmdShow)
{
TCHAR szText[100];
HANDLE hStdIn, hStdOut;
DWORD dwCount;
// 표준 장치 핸들 얻음
hStdIn = GetStdHandle(STD_INPUT_HANDLE); // 표준 입력
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); // 표준 출력
AllocConsole(); // 콘솔이 생성되며 보인다.
// 콘솔 입력
MessageBox(NULL, _T("콘솔 입력 테스트"), _T("테스트"), MB_OK);
ReadConsole(hStdIn, szText, sizeof(szText)/sizeof(TCHAR), &dwCount, NULL);
// 콘솔 출력
MessageBox(NULL, _T("콘솔 출력 테스트"), _T("테스트"), MB_OK);
WriteConsole(hStdOut, szText, dwCount-2, &dwCount, NULL); // 문자열 끝의 "\r\n"을 제외하기 위해 길이 입력 항목에 -2 해줌.
MessageBox(NULL, _T("콘솔 닫기"), _T("테스트"), MB_OK);
FreeConsole(); // 콘솔 닫기
MessageBox(NULL, _T("완료"), _T("테스트"), MB_OK);
}
[출처] 윈도우즈 프로그램에서 콘솔 사용하기 (C, C++ 프로그래밍으로의 여행) |작성자 돌멩이
# by | 2008/05/18 21:27 | ┗▷▶▷ Pragma | 트랙백 | 덧글(0)














☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]