Функции _setactivepage(), _setvisualpage(), _getactivepage() и _getvisualpage() - часть 2
#include <stdlib.h> #include <graph.h> #include <time.h>
void main(void) { short old_vpage, old_apage, page, row;
struct videoconfig vc; char buffer[80]; long wait = 0; clock_t end;
// определяем конфигурацию видеосистемы
_getvideoconfig(&vc);
// завершаем программу, если поддерживается только одна // страница видеопамяти
if(vc.numvideopages<2) exit(1);
// сохраняем номера активной и отображаемой страниц видеопамяти
old_apage = _getactivepage(); old_vpage = _getvisualpage();
// записываем на каждой из страниц ее номер
for(page = 0; page < vc.numvideopages; page++) {
// изменяем активную страницу видеопамяти
_setactivepage(page); _clearscreen(_GCLEARSCREEN); sprintf(buffer, "страница видеопамяти номер %d", page); for(row = page + 1; row < 26; row += vc.numvideopages) { _settextposition(row, 35); _outtext(buffer); } }
while(!kbhit()) for(page = 0; page < vc.numvideopages; page++) {
// меняем отображаемую страницу видеопамяти
_setvisualpage(page);
// производим постепенно увеличивающуюся задержку
for(end = clock() + wait++; clock() < end;); }
getch();
// восстанавливаем активную и отображаемую страницы
_setactivepage(old_apage); _setvisualpage(old_vpage); }