На главную

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 a Screen Buffer's Window



The SetConsoleWindowInfo function can be used to scroll the contents of a screen buffer in the console window. This function can also change the window size. The function can either specify the new upper left and lower right corners of the screen buffer's window as absolute screen buffer coordinates or specify the changes from the current window coordinates. The function fails if the specified window coordinates are outside the boundaries of the screen buffer.

The following example scrolls the view of the screen buffer up one row by modifying the absolute window coordinates returned by the GetConsoleScreenBufferInfo function.

HANDLE hStdout;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
SMALL_RECT srctWindow;

hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

/* Get the current screen buffer size and window position. */

if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
MyErrorExit("GetConsoleScreenBufferInfo");

/* Set srctWindow to the current window size and location. */

srctWindow = csbiInfo.srWindow;

/* If window is not at the screen buffer top, move it up one line. */


if ( srctWindow.Top > 0 ) {
srctWindow.Top -= 1; /* move top up by one row */
srctWindow.Bottom -= 1; /* move bottom up by one row */
if (! SetConsoleWindowInfo(
hStdout, /* screen buffer handle */
TRUE, /* absolute coordinates */
&srctWindow)) /* specifies new location */
MyErrorExit("SetConsoleWindowInfo");
}


The same scrolling can be done by specifying changes in the window coordinates.

/* Get the current screen buffer window position. */

if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
MyErrorExit("GetConsoleScreenBufferInfo");

/*If window is not at the screen buffer top, move it up one line. */

if (csbiInfo.srWindow.Top > 0) {
srctWindow.Top = -1; /* move top up by one row */
srctWindow.Bottom = -1; /* move bottom up by one row */
srctWindow.Left = 0; /* no change */
srctWindow.Right = 0; /* no change */

if (! SetConsoleWindowInfo(
hStdout, /* screen buffer handle */
FALSE, /* deltas, not absolute */
&srctWindow)) /* specifies new location */
MyErrorExit("SetConsoleWindowInfo");
}



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

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



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

Следующий пример перемещает вид экранного буфера по одной колонке модифицируя абсолютные координаты окна возвращался функцией GetConsoleScreenBufferInfo.

ПРООПЕРИРУЙТЕ hStdout;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
SMALL_RECT srctWindow;

hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

/* Получите текущий экранный буферный размер и окно position. */

если (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) MyErrorExit("GetConsoleScreenBufferInfo");

/* Установите srctWindow в текущий размер окна и location. */

srctWindow = csbiInfo.srWindow;

/* Если окно - не на экранном буферном верхе, переместите это по одном line. */


если ( srctWindow.Верх > 0 ) { srctWindow.Верх -= 1; /* верх перемещения по одной колонкой */ srctWindow.Низ -= 1; /* переместите разруху одной колонкой */ если (! SetConsoleWindowInfo( hStdout, /* ЭКРАННАЯ буферная ручка */ ИСТИНА, /* абсолютные координаты */ &srctWindow)) /* определяет новую позицию */ MyErrorExit("SetConsoleWindowInfo");
}


Та же прокрутка может быть сделана посредством определения изменений в координатах окна.

/* Получите текущее экранное буферное окно position. */

если (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) MyErrorExit("GetConsoleScreenBufferInfo");

/*Если окно - не на экранном буферном верхе, переместите это по одном line. */

если (csbiInfo.srWindow.Верх > 0) { srctWindow.Завершать = -1; /* верх перемещения по одной колонкой */ srctWindow.Вникать = -1; /* переместите разруху одной колонкой */ srctWindow.Оставившее = 0; /* без изменения */ srctWindow.Право = 0; /* без изменения */

если (! SetConsoleWindowInfo( hStdout, /* ЭКРАННАЯ буферная ручка */ ЛОЖЬ, /* дельты, не абсолютный */ &srctWindow)) /* определяет новую позицию */ MyErrorExit("SetConsoleWindowInfo");
}



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