Для установки формы курсора, удобно использовать функцию _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 ); }