Выключить курсор мыши
3.3.3. Выключить курсор мыши
На входе: AX = 0002h. На выходе: регистры не используются.
Эта функция уменьшает на единицу счетчик видимости курсора. Если содержимое счетчика становится равным -1, изображение курсора пропадает с экрана.
Если ваша программа использует для вывода на экран метод прямой записи в экранную память, перед обновлением содержимого экрана необходимо погасить курсор, а после завершения обновления высветить его опять. Это связано с тем, что драйвер мыши "помнит" старое значение атрибута символа, на который указывал курсор до обновления содержимого видеопамяти. Вы изменили атрибут, записав новое значение непосредственно в экранную память. Теперь, если установить курсор мыши на другой символ, изображение старого символа будет испорчено - появится прямоугольник (как бы еще одно изображение курсора мыши).
Вызов функции: /** *.Name ms_off *.Title Выключение курсора мыши * *.Descr Эта функция уменьшает на 1 индикатор уровня * видимости курсора. После вызова этой функции * курсор, если он был на экране, исчезает. * Многократные обращения будут последовательно * уменьшать индикатор и затем потребуют * многократных вызовов функции ms_on для * его включения. * *.Proto void ms_off(void) * *.Params Не используются * *.Return Ничего * *.Sample ms_sampl1.c **/ #include <dos.h> #include <conio.h> union REGS reg; void ms_off(void) { reg.x.ax = 2; int86(0x33,®,®); }
Приведем программу, демонстрирующую применение описанных выше функций. Программа инициализирует мышь, делает видимым курсор мыши и "прячет" курсор после нажатия на любую клавишу:
#include <stdio.h> #include <conio.h> #include "sysp.h"
void main() {
int botm;
// Инициализируем мышь, определяем количество клавиш
if(!ms_init(&botm)) { printf("\nМышь не установлена"); exit(-1); }
printf("\nУстановлена мышь: "); switch (botm) { case 2: printf("двухклавишная"); break; case 3: printf("трехклавишная, системы Mouse Systems"); break; case 0: default: printf("неизвестной системы"); break; }
// Включаем курсор и ожидаем нажатия на клавишу
printf("\n\nКурсор мыши включен, " "для выключения нажмите любую клавишу");
ms_on();
getch();
// Выключаем курсор
ms_off(); printf("\nКурсор выключен, " "для завершения нажмите любую клавишу");
getch();
}