Win App에서의 콘솔 윈도우 입/출력 설정

출처 : http://grampus.tistory.com/

윈도우 어플리케이션을 개발할때 필요에 의해서 콘솔 윈도우를 생성해야 할 때 경우가 있다.
콘솔 윈도우 생성하는 방법 및 표준 입/출력 설정을 통해 윈도우 어플리케이션에서도 C언어에서 제공하는
표준 입/출력 함수를 사용해서 입출력을 해보도록 한다.

 

콘솔 윈도우 생성 및 해제

콘솔 윈도우의 생성 및 해제는 각 함수 호출 한번씩으로 생성 및 해제를 할 수 있다.

// 콘솔 생성  
if( !AllocConsole() )  
  return ERROR;  
...생략...    
// 종료 전 콘솔 할당 해제  
FreeConsole();

표준 입/출력 핸들 설정

입/ 출력에 대한 핸들은 _open_osfhandle()함수를 통해서 인자로 넘겨준 OS의 File Handle과 연관된 C run-time file descriptor를 얻어 Open후 stdout, stdin에 각각 설정을 해주면 된다. 아래의 코드를 참고 하자.

int hCrt, i;  
FILE *hf;    
// 표준 출력에 대한 File Descriptor를 얻어옴  
hCrt = _open_osfhandle((long) GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);  
  
// File Handle Open    
hf = _fdopen( hCrt, "w" );  
*stdout = *hf;    
// Buffer관련 설정  
i = setvbuf( stdout, NULL, _IONBF, 0 );    
// Test Code    
puts("HelloWorld");
int hCrt, i;    
FILE *hf;    
// 표준 입력에 대한 File Descriptor르 얻음    
hCrt = _open_osfhandle((long) GetStdHandle(STD_INPUT_HANDLE), _O_TEXT);  
  
// File Handle Open    
hf = _fdopen( hCrt, "r" );  
*stdin = *hf;    
// Buffer 관련 설정  
i = setvbuf( stdin, NULL, _IONBF, 0 );  
  
// Test Code    
printf("Input number:");  
scanf("%d", &i);  
printf("Input number is %d\n", i);

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다.