Программирование видеоадаптеров CGA, EGA и VGA© Александр Фролов, Григорий ФроловТом 3, М.: Диалог-МИФИ, 1992, 287 стр. 14.3. Функция _settextcursor()Для установки формы курсора, удобно использовать функцию _settextcursor() из стандартной библиотеки трансляторов Microsoft Quick C 2.5 и C 6.0. Фактически функция реализована через функцию 01h прерывания 10h. Формат функции приведен ниже: short _settextcursor( short shape); Параметр shape задает новую форму курсора. Старший байт определяет верхную, а младший - нижную границы курсора (см. INT 10h, функция 01h). Возвращаемая функцией величина определяет предыдущую форму курсора, или если она равна -1 - сообщает об ошибке. Следующий пример демонстрирует использование функций _gettextcursor() и _settextcursor(): #include <stdio.h> #include <graph.h> void main(void) { short old_cursor; char top = 0, bottom = 0; int error; // запоминаем текущую форму курсора old_cursor = _gettextcursor(); _displaycursor( _GCURSORON ); // если вводится отрицательное значение для любой границы, // то программа завершается for(;top >= 0 && bottom >= 0 ;) { // очищаем экран дисплея _clearscreen( _GCLEARSCREEN ); printf("Введите верхнюю границу курсора:"); scanf("%d", &top); printf("Введите нижнюю границу курсора:"); scanf("%d", &bottom); // изменение формы курсора error = _settextcursor((top << 8) | bottom); _clearscreen( _GCLEARSCREEN ); if( error == -1) puts("Ошибка."); else printf("Предыдущая форма курсора:" "\n верхняя граница = %d," "\n нижняя граница = %d.", error >> 8, error & 0xFF); // ожидаем нажатия на клавиатуру getch(); } // восстанавливаем прежнюю форму курсора _settextcursor( old_cursor ); } |