Выключить курсор мыши



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,&reg,&reg); }

Приведем программу, демонстрирующую применение описанных выше функций. Программа инициализирует мышь, делает видимым курсор мыши и "прячет" курсор после нажатия на любую клавишу: #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(); }



Содержание раздела