На главную

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 | Скачать Вниз

Writing Characters or Colors to Consecutive Cells



Characters or color attributes can be written to specified character cells in a screen buffer. The following example uses the WriteConsoleOutputCharacter function to write a string of characters beginning at the upper left corner of a screen buffer. Then the example uses the WriteConsoleOutputAttribute function to write a string of color attributes to the first 51 cells of the same row. The coord parameter for both functions specifies the character cell in the screen buffer at which writing begins. The location in the console window where these characters or colors appear depends on the current window rectangle of the screen buffer. For additional information about the relationship between a screen buffer and its windows, see Window and Screen Buffer Size and Scrolling the Screen Buffer.

HANDLE hOutput;
LPTSTR lpszString = "Character String";
DWORD cWritten;
BOOL fSuccess;
COORD coord;
WORD wColors[3], wColor;
CHAR chFillChar;

/* Write a string of characters to a screen buffer. */

coord.X = 0; /* start at first cell */
coord.Y = 0; /* of first row */
fSuccess = WriteConsoleOutputCharacter(
hOutput, /* screen buffer handle */
lpszString, /* pointer to source string */

lstrlen(lpszString), /* length of string */
coord, /* first cell to write to */
&cWritten); /* actual number written to */
if (! fSuccess)
MyErrorExit("WriteConsoleOutputCharacter");

/* Write a string of colors to a screen buffer. */

wColors[0] = BACKGROUND_RED;
wColors[1] = BACKGROUND_RED | /* white background */
BACKGROUND_GREEN |
BACKGROUND_BLUE;

wColors[2] = BACKGROUND_BLUE;
for (;fSuccess && coord.X < 50; coord.X += 3)
fSuccess = WriteConsoleOutputAttribute(
hOutput, /* screen buffer handle */
wColors, /* pointer to source string */
3, /* length of string */
coord, /* first cell to write to */
&cWritten); /* actual number written to */
if (! fSuccess)
MyErrorExit("WriteConsoleOutputAttribute");



The same character or color attribute can be written to a specified number of consecutive screen buffer cells beginning at a specified location. The following example uses the FillConsoleOutputCharacter function to clear a 80-by-50-character screen buffer, and then it uses the FillConsoleOutputAttribute function to set the color attributes of the same cells.

/* Fill an 80-by-50-character screen buffer with the space character. */

coord.X = 0; /* start at first cell */
coord.Y = 0; /* of first row */
chFillChar = ' ';

fSuccess = FillConsoleOutputCharacter(
hStdout, /* screen buffer handle */
chFillChar, /* fill with spaces */
80*50, /* number of cells to fill */
coord, /* first cell to write to */

&cWritten); /* actual number written to */
if (! fSuccess)
MyErrorExit("FillConsoleOutputCharacter");

/* Set 80-by-50-character screen buffer colors to white text on red. */

wColor = BACKGROUND_RED |
FOREGROUND_RED |
FOREGROUND_GREEN |
FOREGROUND_BLUE;
fSuccess = FillConsoleOutputAttribute(
hStdout, /* screen buffer handle */
wColor, /* color to fill with */

80*50, /* number of cells to fill */
coord, /* first cell to write to */
&cWritten); /* actual number written to */
if (! fSuccess)
MyErrorExit("FillConsoleOutputAttribute");



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

Сочинение Символов или Цветов в Последовательные Ячейки



Символы или цветные атрибуты могут быть написаны на определившее символьные ячейки в экранном буфере. Следующий пример использует функцию WriteConsoleOutputCharacter, чтобы писать строку символов, начинаемых в верхнем левом углу экранного буфера. Затем пример использует функцию WriteConsoleOutputAttribute, чтобы писать строку цветных атрибутов к первым 51 ячейкам той же самой колонки. Параметр coord для обеих функций определяет символьную ячейку в экранном буфере в которой сочинение начинается. Позиция в консольном окне где эти символы или цвета появляются зависит от текущего прямоугольника окна экранного буфера. Для дополнительной информации об отношении между экранным буфером и окном, смотри Окно и Отгораживайте Буферный Размер и Прокрутку Экранного Буфера.

ПРООПЕРИРУЙТЕ hOutput;
LPTSTR lpszString = "СИМВОЛЬНАЯ Строка";
DWORD cWritten;
BOOL fSuccess;
COORD coord;
СЛОВО wColors[3], wColor;
СИМВОЛ chFillChar;

/* Запишите строку символов на экран buffer. */

coord.X = 0; /* запустите сначала ячейку */ coord.Y = 0; /* первой колонки */ fSuccess = WriteConsoleOutputCharacter( hOutput, /* экранная буферная ручка */ lpszString, /* указатель в исходную строку */

lstrlen(lpszString), /* длина строки */ coord, /* первая ячейка, чтобы записывать, чтобы */ &cWritten); /* фактическое число записанное, чтобы */ если (! fSuccess) MyErrorExit("WriteConsoleOutputCharacter");

/* Запишите строку цветов на экран buffer. */

wColors[0] = BACKGROUND_RED;
wColors[1] = BACKGROUND_RED | /* Белый фон */ BACKGROUND_GREEN | BACKGROUND_BLUE;

wColors[2] = BACKGROUND_BLUE;
для (;fSuccess && coord.X < 50; coord.X += 3) fSuccess = WriteConsoleOutputAttribute( hOutput, /* Экранная буферная ручка */ wColors, /* указатель в исходную строку */ 3, /* длина строки */ coord, /* первая ячейка, чтобы записывать, чтобы */ &cWritten); /* фактическое число записанное, чтобы */ если (! fSuccess) MyErrorExit("WriteConsoleOutputAttribute");



Тот же символ или цвет приписывают может быть записано в определенное количество последовательных экранных буферных ячеек, начинаемых в определенной позиции. Следующий пример использует функцию FillConsoleOutputCharacter, чтобы очищать 80-by-50- символьный экранный буфер, и затем это использует функцию FillConsoleOutputAttribute, чтобы устанавливать цветные атрибуты тех же самых ячеек.

/* Заполните 80-by-50- символьный экранный буфер пространством character. */

coord.X = 0; /* запустите сначала ячейку */ coord.Y = 0; /* первой колонки */ chFillChar = ' ';

fSuccess = FillConsoleOutputCharacter( hStdout, /* Экранная буферная ручка */ chFillChar, /* наполнитель пробелами */ 80*50, /* количество ячеек, чтобы заполнять */ coord, /* первая ячейка, чтобы записывать, чтобы */

&cWritten); /* фактическое число записанное, чтобы */ если (! fSuccess) MyErrorExit("FillConsoleOutputCharacter");

/* Установите 80-by-50- символьные экранные буферные цвета в белый текст в red. */

wColor = BACKGROUND_RED | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
fSuccess = FillConsoleOutputAttribute( hStdout, /* Экранная буферная ручка */ wColor, /* цвет, чтобы заполнять с */

80*50, /* количество ячеек, чтобы заполнять */ coord, /* первая ячейка, чтобы записывать, чтобы */ &cWritten); /* фактическое число записанное, чтобы */ если (! fSuccess)
MyErrorExit("FillConsoleOutputAttribute");



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