Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Программирование видеоадаптеров 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 );
}
[Назад] [Содеожание] [Дальше]