[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);

 


}

by toRoad™ | 2008/05/18 21:27 | ┗▷▶▷ Pragma | 트랙백 | 덧글(0)

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

:         :

:

비공개 덧글

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