SetConsoleMode 함수

콘솔 입력 버퍼의 입력 모드 또는 콘솔 화면 버퍼의 출력 모드를 설정합니다.

구문

BOOL WINAPI SetConsoleMode(
  _In_ HANDLE hConsoleHandle,
  _In_ DWORD  dwMode
);

매개 변수

hConsoleHandle [in]
콘솔 입력 버퍼 또는 콘솔 화면 버퍼에 대한 핸들입니다. 핸들에는 GENERIC_READ 액세스 권한이 있어야 합니다. 자세한 내용은 콘솔 버퍼 보안 및 액세스 권한을 참조하세요.

dwMode [in]
설정할 입력 또는 출력 모드입니다.

hConsoleHandle 매개 변수가 입력 핸들이면 모드가 다음 값 중 하나 이상일 수 있습니다. 콘솔이 만들어지면 기본적으로 ENABLE_WINDOW_INPUTENABLE_VIRTUAL_TERMINAL_INPUT을 제외한 모든 입력 모드가 사용하도록 설정됩니다.

의미
ENABLE_ECHO_INPUT 0x0004 ReadFile 또는 ReadConsole 함수에서 읽은 문자는 콘솔에 입력될 때 활성 화면 버퍼에 쓰여집니다. ENABLE_LINE_INPUT 모드도 사용하도록 설정한 경우에만 이 모드를 사용할 수 있습니다.
ENABLE_INSERT_MODE 0x0020 이 모드를 사용하도록 설정하면 콘솔 창에 입력된 텍스트를 현재 커서 위치에 삽입하고 해당 위치 뒤에 오는 모든 텍스트를 덮어쓰지 않습니다. 이 모드를 사용하지 않도록 설정하면 뒤에 오는 모든 텍스트를 덮어씁니다.
ENABLE_LINE_INPUT 0x0002 캐리지 리턴 문자를 읽은 경우에만 ReadFile 또는 ReadConsole 함수가 반환됩니다. 이 모드를 사용하지 않도록 설정하면 하나 이상의 문자를 사용할 수 있을 때 함수가 반환됩니다.
ENABLE_MOUSE_INPUT 0x0010 마우스 포인터가 콘솔 창의 테두리 내에 있고 키보드 포커스가 창에 있으면 마우스 이동 및 단추 누름으로 생성된 마우스 이벤트가 입력 버퍼에 배치됩니다. 이 모드를 사용하도록 설정한 경우에도 이러한 이벤트는 ReadFile 또는 ReadConsole에서 삭제됩니다. ReadConsoleInput 함수를 사용하여 입력 버퍼에서 MOUSE_EVENT 입력 레코드를 읽을 수 있습니다.
ENABLE_PROCESSED_INPUT 0x0001 CTRL+C가 시스템에서 처리되며 입력 버퍼에 배치되지 않습니다. ReadFile 또는 ReadConsole에서 입력 버퍼를 읽으면 다른 제어 키가 시스템에서 처리되며 ReadFile 또는 ReadConsole 버퍼에서 반환되지 않습니다. ENABLE_LINE_INPUT 모드도 사용하도록 설정하면 백스페이스, 캐리지 리턴 및 줄 바꿈 문자가 시스템에서 처리됩니다.
ENABLE_QUICK_EDIT_MODE 0x0040 이 플래그를 사용하면 사용자가 마우스를 사용하여 텍스트를 선택하고 편집할 수 있습니다. 이 모드를 사용하도록 설정하려면 ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS를 사용합니다. 이 모드를 사용하지 않도록 설정하려면 이 플래그 없이 ENABLE_EXTENDED_FLAGS를 사용합니다.
ENABLE_WINDOW_INPUT 0x0008 콘솔 화면 버퍼의 크기를 변경하는 사용자 상호 작용이 콘솔의 입력 버퍼에 보고됩니다. 이러한 이벤트에 대한 정보는 ReadConsoleInput 함수를 사용하는 애플리케이션에서 입력 버퍼로부터 읽을 수 있지만, ReadFile 또는 ReadConsole을 사용하는 애플리케이션에서는 읽을 수 없습니다.
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 이 플래그를 설정하면 콘솔 창에서 받은 사용자 입력을 ReadFile 또는 ReadConsole 함수를 통해 지원 애플리케이션에서 검색할 수 있는 콘솔 가상 터미널 시퀀스로 변환하도록 가상 터미널 처리 엔진에 지시합니다.

이 플래그의 일반적인 용도는 출력 핸들의 ENABLE_VIRTUAL_TERMINAL_PROCESSING과 함께 가상 터미널 시퀀스를 통해서만 통신하는 애플리케이션에 연결하기 위한 것입니다.

hConsoleHandle 매개 변수가 화면 버퍼 핸들이면 모드가 다음 값 중 하나 이상일 수 있습니다. 화면 버퍼가 만들어지면 기본적으로 두 출력 모드를 모두 사용하도록 설정됩니다.

의미
ENABLE_PROCESSED_OUTPUT 0x0001 WriteFile 또는 WriteConsole 함수에서 쓰거나 ReadFile 또는 ReadConsole 함수에서 에코하는 문자는 ASCII 제어 시퀀스에 대해 구문 분석되고 올바른 작업이 수행됩니다. 백스페이스, 탭, 벨, 캐리지 리턴 및 줄 바꿈 문자가 처리됩니다. 컨트롤 시퀀스를 사용하거나 ENABLE_VIRTUAL_TERMINAL_PROCESSING이 설정된 경우 사용하도록 설정해야 합니다.
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 WriteFile 또는 WriteConsole을 사용하여 쓰거나 ReadFile 또는 ReadConsole을 사용하여 에코하는 경우 커서가 현재 행의 끝에 도달하면 다음 행의 시작 부분으로 이동합니다. 이렇게 하면 커서가 창의 마지막 행을 지나 이동할 때 콘솔 창에 표시되는 행이 자동으로 위로 스크롤됩니다. 또한 커서가 콘솔 화면 버퍼의 마지막 행을 지나 이동할 때 콘솔 화면 버퍼의 내용이 위로 스크롤됩니다(../콘솔 화면 버퍼의 맨 위 행 삭제). 이 모드를 사용하지 않도록 설정하면 행의 마지막 문자를 후속 문자로 덮어씁니다.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 WriteFile 또는 WriteConsole을 사용하여 쓰는 경우 문자는 VT100과 커서 이동, 색/글꼴 모드 및 기존 콘솔 API를 통해서도 수행할 수 있는 기타 작업을 제어하는 이와 비슷한 제어 문자 시퀀스에 대해 구문 분석됩니다. 자세한 내용은 콘솔 가상 터미널 시퀀스를 참조하세요.
이 플래그를 사용할 때 ENABLE_PROCESSED_OUTPUT이 설정되어 있는지 확인합니다.
DISABLE_NEWLINE_AUTO_RETURN 0x0008 WriteFile 또는 WriteConsole을 사용하여 쓰는 경우 커서 이동 및 버퍼 스크롤 작업을 지연시킬 수 있는 추가 상태가 줄 끝 래핑에 추가됩니다.

일반적으로 ENABLE_WRAP_AT_EOL_OUTPUT을 설정하고 텍스트가 줄 끝에 도달하면 커서가 다음 줄로 즉시 이동하고 버퍼의 내용이 한 줄 위로 스크롤됩니다. 이 플래그 집합과 달리 커서가 다음 줄로 이동하지 않고 스크롤 작업이 수행되지 않습니다. 쓰인 문자는 줄의 마지막 위치에 출력되고, 커서는 ENABLE_WRAP_AT_EOL_OUTPUT이 해제된 것처럼 이 문자 위에 남아 있지만, 다음 출력 가능한 문자는 ENABLE_WRAP_AT_EOL_OUTPUT이 설정된 것처럼 출력됩니다. 덮어쓰기는 발생하지 않습니다. 특히 커서가 다음 줄로 빠르게 이동하고, 필요한 경우 스크롤이 수행되며, 문자가 출력되고, 커서가 한 위치 더 이동합니다.

이 플래그의 일반적인 용도는 ENABLE_VIRTUAL_TERMINAL_PROCESSING 설정과 함께 스크롤을 즉각 트리거하지 않고 화면(../오른쪽 아래 모서리에서)에 최종 문자를 쓰는 작업이 필요한 동작인 터미널 에뮬레이터를 더 효율적으로 에뮬레이션하기 위한 것입니다.
ENABLE_LVB_GRID_WORLDWIDE 0x0010 WriteConsoleOutputWriteConsoleOutputAttribute를 포함한 문자 특성을 쓰는 API를 사용하면 문자 특성의 플래그를 사용하여 텍스트의 전경색과 배경색을 조정할 수 있습니다. 또한 다양한 DBCS 플래그가 COMMON_LVB 접두사를 사용하여 지정되었습니다. 지금까지 이러한 플래그는 한국어, 중국어 및 일본어용 DBCS 코드 페이지에서만 작동했습니다.

선행 및 후행 바이트 플래그를 제외하고, 선 그리기와 역방향 비디오(../전경색 및 배경색 바꾸기)를 설명하는 나머지 플래그는 다른 언어에서 출력의 일부를 강조하는 데 유용할 수 있습니다.

이 콘솔 모드 플래그를 설정하면 이러한 특성을 모든 언어의 모든 코드 페이지에서 사용할 수 있습니다.

비 CJK 컴퓨터에서 이러한 플래그를 무시하여 비트를 자체적인 목적으로 또는 실수로 이러한 필드에 저장하는 콘솔을 지금까지 활용해 왔던 알려진 애플리케이션과의 호환성을 유지하는 것은 기본적으로 해제되어 있습니다.

ENABLE_VIRTUAL_TERMINAL_PROCESSING 모드를 사용하면 연결된 애플리케이션에서 콘솔 가상 터미널 시퀀스를 통해 밑줄 또는 역방향 비디오를 요청하는 경우 이 플래그가 여전히 해제된 상태에서 LVB 그리드 및 역방향 비디오 플래그를 설정할 수 있습니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

콘솔은 입력 버퍼 및 하나 이상의 화면 버퍼로 구성됩니다. 콘솔 버퍼의 모드는 I/O(입력 또는 출력) 작업 중에 콘솔이 작동하는 방식을 결정합니다. 하나의 플래그 상수 집합은 입력 핸들에 사용되고, 다른 집합은 화면 버퍼(출력) 핸들에 사용됩니다. 한 화면 버퍼의 출력 모드를 설정해도 다른 화면 버퍼의 출력 모드에는 영향을 주지 않습니다.

ENABLE_LINE_INPUTENABLE_ECHO_INPUT 모드는 ReadFile 또는 ReadConsole을 사용하여 콘솔의 입력 버퍼에서 읽는 프로세스에만 영향을 줍니다. 마찬가지로 ENABLE_PROCESSED_INPUT 모드는 CTRL+C 입력이 입력 버퍼에 보고하는지(ReadConsoleInput 함수에서 읽음), 아니면 애플리케이션에서 정의한 함수에 전달하는지 여부도 결정한다는 것을 제외하고는 주로 ReadFileReadConsole 사용자에게 영향을 줍니다.

ENABLE_WINDOW_INPUTENABLE_MOUSE_INPUT 모드는 창 크기 조정 및 마우스 작업과 관련된 사용자 상호 작용을 입력 버퍼에 보고하는지, 아니면 삭제할지를 결정합니다. 이러한 이벤트는 ReadConsoleInput에서 읽을 수 있지만, 항상 ReadFileReadConsole에서 필터링합니다.

ENABLE_PROCESSED_OUTPUTENABLE_WRAP_AT_EOL_OUTPUT 모드는 ReadFile 또는 ReadConsoleWriteFile 또는 WriteConsole을 사용하는 프로세스에만 영향을 줍니다.

콘솔 입력 버퍼 또는 화면 버퍼의 현재 모드를 확인하려면 GetConsoleMode 함수를 사용합니다.

예제

예제는 입력 버퍼 이벤트 읽기를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
헤더 ConsoleApi.h(WinCon.h를 통해, Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

콘솔 함수

콘솔 모드

GetConsoleMode

HandlerRoutine

ReadConsole

ReadConsoleInput

ReadFile

WriteConsole

WriteFile