Поделиться через


Размер буфера окна и экрана

Размер буфера экрана выражается в виде сетки координат на основе символьных ячеек. Ширина — это количество ячеек символов в каждой строке, а высота — это количество строк. Связанный с каждым буфером экрана — это окно, определяющее размер и расположение прямоугольной части буфера экрана консоли, отображаемой в окне консоли. Окно буфера экрана определяется путем указания координат символьных ячеек верхнего левого и нижнего правых ячеек прямоугольника окна.

Примечание.

В мире последовательностей виртуальных терминалов размер окна и размер буфера экрана фиксируются в том же значении. Терминал обрабатывает любую область прокрутки, которая будет эквивалентом консоли с размером буфера экрана, превышающим размер окна. Это содержимое принадлежит терминалу и обычно не является частью адресной области. Дополнительные сведения см. в сравнении классических функций консоли и виртуальных последовательностей терминалов.

Буфер экрана может быть любым размером, ограниченным только доступной памятью. Размеры окна буфера экрана не могут превышать соответствующие измерения буфера экрана консоли или максимальное окно, которое может помещаться на экран на основе текущего размера шрифта (контролируемый исключительно пользователем).

Функция GetConsoleScreenBufferInfo возвращает следующие сведения о буфере экрана и его окне:

  • Текущий размер буфера экрана консоли
  • Текущее расположение окна
  • Максимальный размер окна с учетом текущего размера буфера экрана, текущего размера шрифта и размера экрана

Функция GetLargestConsoleWindowSize возвращает максимальный размер окна консоли на основе текущих размеров шрифта и экрана. Этот размер отличается от максимального размера окна, возвращаемого GetConsoleScreenBufferInfo , в том случае, что размер буфера экрана консоли игнорируется.

Чтобы изменить размер буфера экрана, используйте функцию SetConsoleScreenBufferSize . Эта функция завершается ошибкой, если любое измерение указанного размера меньше соответствующего измерения окна консоли.

Чтобы изменить размер или расположение окна буфера экрана, используйте функцию SetConsoleWindowInfo . Эта функция завершается ошибкой, если указанные координаты угла окна превышают ограничения буфера экрана консоли или экрана. Изменение размера окна активного буфера экрана изменяет размер окна консоли, отображаемого на экране.

Процесс может изменить входной режим консоли, чтобы включить входные данные окна, чтобы процесс мог получать входные данные при изменении размера буфера экрана консоли. Если приложение включает входные данные окна, он может использовать GetConsoleScreenBufferInfo для получения размера окна и буфера экрана при запуске. Затем эти сведения можно использовать для определения способа отображения данных в окне. Если пользователь изменяет размер буфера экрана консоли, приложение может реагировать, изменяя способ отображения данных. Например, приложение может изменить способ переноса текста в конце строки, если количество символов для каждой строки изменяется. Если приложение не включает входные данные окна, оно должно либо использовать унаследованное окно и размер буфера экрана, либо задать для них нужный размер во время запуска и восстановить унаследованные размеры при выходе. Дополнительные сведения о режиме ввода окна см. в режимах консоли низкого уровня.