Аппаратное обеспечение IBM PC

       

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


На входе: 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();

}



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