На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Scrolling the Screen Buffer



The console window displays a portion of the active screen buffer. Each screen buffer maintains its own current window rectangle that specifies the coordinates of the upper left and lower right character cells to be displayed in the console window. To determine the current window rectangle of a screen buffer, use GetConsoleScreenBufferInfo. When a screen buffer is created, the upper left corner of its window is at the upper left corner of the screen buffer at (0,0).

The window rectangle can change to display different parts of the screen buffer. The window rectangle of a screen buffer can change in the following situations:

· When SetConsoleWindowInfo is called to specify a new window rectangle, it scrolls the view of the screen buffer by changing the position of the window rectangle without changing the size of the window. For examples of scrolling the window's contents, see Scrolling a Screen Buffer's Window.



· When using the WriteFile function to write to a screen buffer with wrap at end-of-line (EOL) output mode enabled, the window rectangle shifts automatically, so the cursor is always displayed.
· When the SetConsoleCursorPosition function specifies a new cursor position that is outside the boundaries of the current window rectangle, the window rectangle shifts automatically to display the cursor.
· When the user changes the size of the console window or uses the window's scroll bars, the window rectangle of the active screen buffer can change. This change is not reported as a window resizing event in the input buffer.



In each of these situations, the window rectangle shifts to display a different part of the screen buffer, but the contents of the screen buffer remain in the same position. The following situations can cause the screen buffer's contents to shift:

· When the ScrollConsoleScreenBuffer function is called, a rectangular block is copied from one part of a screen buffer to another.
· When using WriteFile to write to a screen buffer with wrap at EOL output mode enabled, the screen buffer's contents scroll automatically when the end of the screen buffer is encountered. This scrolling discards the top row of the screen buffer.



ScrollConsoleScreenBuffer specifies the screen buffer rectangle that is moved and the new upper left coordinates to which the rectangle is copied. This function can scroll a portion or the entire contents of the screen buffer.
The illustration shows a ScrollConsoleScreenBuffer operation that scrolls the entire contents of the screen buffer up by several rows. The contents of the top rows are discarded, and the bottom rows are filled with a specified character and color.


The effects of ScrollConsoleScreenBuffer can be limited by specifying an optional clipping rectangle so that the contents of the screen buffer outside the clipping rectangle are unchanged. The effect of clipping is to create a subwindow (the clipping rectangle) whose contents are scrolled without affecting the rest of the screen buffer. For an example that uses ScrollConsoleScreenBuffer, see Scrolling a Screen Buffer's Contents.

Cursor Appearance and Position

A screen buffer's cursor can be visible or hidden. When it is visible, its appearance can vary, ranging from from completely filling a character cell to appearing as a horizontal line at the bottom of the cell. To retrieve information about the appearance and visibility of the cursor, use the GetConsoleCursorInfo function. This function reports whether the cursor is visible and describes the appearance of the cursor as the percentage of a character cell that it fills. To set the appearance and visibility of the cursor, use the SetConsoleCursorInfo function.

Characters written by the high-level console I/O functions are written at the current cursor location, advancing the cursor to the next location. To determine the current cursor position in the coordinate system of a screen buffer, use GetConsoleScreenBufferInfo. You can use SetConsoleCursorPosition to set the cursor position and, thereby, control the placement of text that is written or echoed by the high-level I/O functions. If you move the cursor, text at the new cursor location is overwritten.

The position, appearance, and visibility of the cursor are set independently for each screen buffer.

Screen Buffer Color Attributes

Each screen buffer character cell stores the color attributes for the colors used in drawing the text and background of that cell. An application can set the color data for each character cell individually, storing the data in the Attributes member of the CHAR_INFO structure for each cell.
The current text attributes of each screen buffer determine the foreground (text) and background colors of characters subsequently written or echoed by the high-level functions. An application can use GetConsoleScreenBufferInfo to determine the current text attributes of a screen buffer and the SetConsoleTextAttribute function to set the text attributes. Changing a screen buffer's text attributes does not affect the display of characters previously written. These text attributes do not affect characters written by the low-level console I/O functions (such as the WriteConsoleOutput or WriteConsoleOutputCharacter function) which either explicitly specify the attributes for each cell that is written or leave the attributes unchanged at the written positions.

The following attribute constants are defined in the WINCON.H header file:

· FOREGROUND_BLUE
· FOREGROUND_GREEN
· FOREGROUND_RED
· FOREGROUND_INTENSITY
· BACKGROUND_BLUE
· BACKGROUND_GREEN
· BACKGROUND_RED
· BACKGROUND_INTENSITY



The foreground attributes specify the text color, and the background attributes specify the color used to fill the cell's background. An application can combine the constants to achieve different colors. For example, the following combination results in bright cyan text on a blue background.

FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE


If no background constant is specified, the background is black, and if no foreground constant is specified, the text is black. For example, the following combination produces black text on a white background.

BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Прокрутка Экранного Буфера



Консольное окно отображает часть активного экранного буфера. Каждый экранный буфер поддерживает свой собственный текущий прямоугольник окна, который определяет координаты верхних левых и правых нижних символьных ячеек, которые нужно отображаться в консольном окне. Для того, чтобы определять текущий прямоугольник окна экранного буфера, используйте GetConsoleScreenBufferInfo. Когда экранный буфер создан, верхний левый угол своего окна - в верхнем левом углу экранного буфера в (0,0).

Прямоугольник окна может измениться, чтобы отображать другие части экранного буфера. Прямоугольник окна экранного буфера может измениться в следующих ситуациях:

Когда SetConsoleWindowInfo назван, чтобы определять новый прямоугольник окна, это перемещает вид экранного буфера изменяя позицию прямоугольника окна не изменяя размер окна. Для примеров прокрутки содержания окна, смотри Перемещая Экранное Буферное Окно.



При использовании функции WriteFile, чтобы писаться в экранный буфер с завертываться в конце--линии (EOL) выходного способа приспособленного, перемещения прямоугольника окна автоматически, так что курсор всегда отображен.
Когда функция SetConsoleCursorPosition определяет новую позицию курсора, которая - за пределами границ текущего прямоугольника окна, прямоугольник окна перемещается автоматически, чтобы отображать курсор.
Когда потребитель изменяет размер консольного окна или использует окно scroll бары, прямоугольник окна активного экранного буфера может измениться. Это изменение не сообщено как окно, меняющее размеры случай в входном буфере.



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

Когда функция ScrollConsoleScreenBuffer названа, прямоугольный блок скопирован от одной части экранного буфера до другого.
При использовании WriteFile, чтобы писаться в экранный буфер с завертываться в выходном способе EOL приспособленном, экранное буферное содержание перемещается автоматически когда конец экранного буфера столкнулся. Эта прокрутка отвергает верхнюю колонку экранного буфера.



ScrollConsoleScreenBuffer ОПРЕДЕЛЯЕТ экранный буферный прямоугольник, который перемещен и новые верхние левые координаты на которых прямоугольник скопирован. Эта функция может переместить часть или целое содержание экранного буфера.
Иллюстрация показывает действие ScrollConsoleScreenBuffer, которое перемещает целое содержание экранного буфера по несколькими колонками. Содержание верхних колонок отвергнуто, и нижние колонки заполнены определенным символом и цветом.


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

Появление Курсора и Позиции

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

Символы записанные высокоуровневыми консольными функциями В/В записаны в текущей позиции курсора, предоставляющей курсор в следующую позицию. Для того, чтобы определять текущую позицию курсора в системе координат экранного буфера, используйте GetConsoleScreenBufferInfo. Вы можете использовать SetConsoleCursorPosition, чтобы устанавливать позицию курсора и, этим самым, управлять размещением текста, который записан или echoed высокоуровневыми функциями В/В. Если Вы перемещаете курсор, текст в новой позиции курсора переписан.

Позиция, появление, и видимость курсора устанавливаются независимо для каждого экранного буфера.

Экранные Буферные Цветные Атрибуты

Каждая буферная символьная ячейка экрана загружает цветные атрибуты для цветов использованных на чертеже текста и фона этой ячейки. Приложение может установить цветные данные для каждой символьной ячейки индивидуально, хранение данных в элементе Атрибутов структуры CHAR_INFO для каждой ячейки.
Текущие текстовые атрибуты каждого экранного буфера определяют передний план (текст) и цвета фона символов впоследствии записанные или echoed высокоуровневыми функциями. Приложение может использовать GetConsoleScreenBufferInfo, чтобы определять текущие текстовые атрибуты экранного буфера и функция SetConsoleTextAttribute, чтобы устанавливать текстовые атрибуты. Изменение экранных буферных текстовых атрибутов не влияет на дисплей прежде письменных символов. Эти текстовые атрибуты не влияют на символы записанные низким уровнем консольных функций В/В (как например, WriteConsoleOutput или функция WriteConsoleOutputCharacter) какое или явно определять атрибуты для каждой ячейки, которая записана или оставляет атрибуты неизменные в письменных позициях.

Вспомогательные константы следующего определены в файле заголовка WINCON.H:

FOREGROUND_BLUE FOREGROUND_GREEN FOREGROUND_RED FOREGROUND_INTENSITY BACKGROUND_BLUE BACKGROUND_GREEN BACKGROUND_RED BACKGROUND_INTENSITY



Атрибуты переднего плана определяют текстовый цвет, и атрибуты фона определяют цвет использованный, чтобы заполнять ячейке фон. Приложение может объединить константы, чтобы достигать других цветов. Например, следующая комбинация заканчивается ярким cyan текстом на синем фоне.

FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE


Если никакая константа фона не определена, фон - черн, и если никакая константа переднего плана не определена, текст черн. Например, следующая комбинация производит черный текст на белом фоне.

BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz