Программирование видеоадаптеров CGA, EGA и VGA


Функции _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); }




Начало  Назад  Вперед