Функция
SetConsoleModeФункция
SetConsoleMode устанавливает режим ввода данных буфера ввода консоли или режима вывода экранного буфера консоли.Синтаксис
hConsoleHandle, // дескриптор экранного буфера или // буфера ввода консоли DWORD dwMode // режим ввода или вывода данных ); |
Параметры
hConsoleHandle
[in] Дескриптор буфера ввода или экранного буфера консоли. Дескриптор должен иметь право доступа
GENERIC_READ. Для получения дополнительной информации, см. статью Защита буфера и права доступа в консоли.dwMode
[in] Режим ввода или вывода данных, который будет установлен. Если
параметр hConsoleHandle является дескриптором ввода, режим может быть одно или несколько нижеследующих значений. Когда консоль создается, все режимы ввода данных кроме ENABLE_WINDOW_INPUT включаются по умолчанию.
Значение |
Предназначение |
ENABLE_LINE_INPUT |
Функция ReadFile или ReadConsole возвращают значение только тогда, когда прочитан символ возврата каретки. Если этот режим заблокирован, функции возвращают значение только тогда, когда доступен один или несколько символов. |
ENABLE_ECHO_INPUT |
Символы, читаемые функцией ReadFile или ReadConsole записаны в активном экранном буфере, поскольку они читаются. Этот режим могут быть использован только в том случае, если также включен режим ENABLE_LINE_INPUT. |
ENABLE_PROCESSED_INPUT |
Сигнал CTRL+C обрабатывается системой и не помещается в буфере ввода. Если буфер ввода читается функцией ReadFile или ReadConsole, другие управляющие клавиши обрабатываются системой и не возвращают значение в буфер ReadConsole или ReadFile. Если к тому же включен режим ENABLE_LINE_INPUT, возвращается символ перевода каретки, а символы перевода строки обрабатываются системой. |
ENABLE_WINDOW_INPUT |
Пользователь воздействует, чтобы изменить размер экранного буфера консоли записанный в буфере ввода консоли. Информация об этих событиях может читаться из буфера ввода приложениями, при помощи использования функции ReadConsoleInput, но не средствами, использующими функции ReadFile или ReadConsole. |
ENABLE_MOUSE_INPUT |
Если курсор мыши - в пределах границ консольного окна, и окно имеет фокус клавиатуры, события от нажатия мыши, созданные перемещением мыши и нажатием кнопки помещаются в буфере ввода. Эти события сбрасываются функциями ReadFile или ReadConsole, даже тогда, когда этот режим включен. |
Если
параметр hConsoleHandle – это дескриптор экранного буфера, режим может иметь одно или несколько нижеследующих значений. Когда экранный буфер создается, оба режима вывода включены по умолчанию.
Значение |
Предназначение |
ENABLE_PROCESSED_OUTPUT |
Символы, записанные функцией WriteFile или WriteConsole или повторенный в эхо режиме функцией ReadFile или ReadConsole проверяются на управляющие последовательности ASCII и правильное выполнение действий. То есть, как обрабатываются возврат на один символ, табуляция, звонок, перевод каретки и символы перевода строки. |
ENABLE_WRAP_AT_EOL_OUTPUT |
Windows NT /2000/XP: При записи функцией WriteFile или WriteConsole или эхо контролем при помощи ReadFile или ReadConsole, курсор перемещается в начало следующего ряда, когда он достигает конца текущего ряда. Это заставляет ряды, отображенные в консольном окне, прокручиваться автоматически вверх, когда курсор продвигается вперед за последний ряд в окне. Это также заставляет содержание экранного буфера консоли прокручиваться вверх (сбрасывая верхние строки экранного буфера консоли), когда курсор продвигается вперед за пределы последнего ряда в экранном буфере консоли. Если этот режим заблокирован, последний символ в ряде переписывается любыми последующими символами. |
Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не ноль.
Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получать расширенные данные об ошибках, вызовите
функцию GetLastError.Замечания
Консоль состоит из буфер ввода и одного или нескольких экранных буферов. Режим консольного буфера выясняет, как консоль ведет себя в ходе операций (I/O) ввода и вывода. Один набор констант флажков используется с дескрипторами ввода, а другой набор использует дескрипторы экранных буферов (вывод данных). Установка режимов вывода одного экранного буфера не затрагивает режимы вывода других экранных буферов.
Режимы
ENABLE_LINE_INPUT и ENABLE_ECHO_INPUT воздействуют только на процессы, которые используют функции ReadFile или ReadConsole, чтобы читать из буфера ввода консоли. Точно так же режим ENABLE_PROCESSED_INPUT главным образом воздействует на функции ReadFile и ReadConsole пользователей, за исключением того, что он также выясняет, записывается ли ввод данных Ctrl+C в буфере ввода (чтобы читаться функцией ReadConsoleInput) или передается функции HandlerRoutine, заданной приложением.Режимы
ENABLE_WINDOW_INPUT и ENABLE_MOUSE_INPUT выясняют, воздействует ли пользователь вызывая изменение размеров окна и действиями мыши на записи в буфере ввода или они сбрасываются. Эти события могут читаться при помощи функции ReadConsoleInput, но они всегда фильтруются функциями ReadFile и ReadConsole.Режимы
ENABLE_PROCESSED_OUTPUT и ENABLE_WRAP_AT_EOL_OUTPUT затрагивают только процессы, которые используют функции ReadFile или ReadConsole и WriteFile или WriteConsole.Чтобы выяснять текущий режим консольного буфера ввода или экранного буфера, используйте
функцию GetConsoleMode.Код примера
Пример смотри в статье
Чтение событий буфера вводимых данных.Смотри также
Обзор консольных приложений, Функции консоли, GetConsoleMode, HandlerRoutine, ReadConsole, ReadConsoleInput, ReadFile, WriteConsole, WriteFile
Размещение и совместимость SetConsoleMode |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Kernel32.lib |
Заголовочный файл |
|
- объявлено в |
Wincon.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |