Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
54
Добавлен:
03.06.2014
Размер:
2.63 Mб
Скачать

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

Функция 01h позволяет включать или выключать курсор мыши:

Регистры на входе:

AX = 0001h

Регистры на выходе:

Регистры не используются

Для управления видимостью курсора драйвер мыши использует внутренний счетчик. Этот счетчик можно увеличивать, вызывая функцию 01h прерывания INT 33h, или уменьшать при помощи функции 02h этого же прерывания.

После инициализации драйвера функцией 00h счетчик устанавливается равным -1. После первого вызова функции 01h счетчик становится равным 0. При этом курсор мыши становится видимым, его можно перемещать по экрану.

Если счетчик равен 0, то следующие вызовы функции 01h игнорируются драйвером. Для того, чтобы погасить курсор, используйте функцию 02h, которая при вызове уменьшает каждый раз содержимое счетчика на единицу.

Функция 01h сбрасывает область, в которой курсор не отображается (если такая область была ранее установлена функцией 10h).

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

Функция 02h уменьшает на единицу счетчик видимости курсора. Если содержимое счетчика становится равным -1, изображение курсора пропадает с экрана.

Регистры на входе:

AX = 0002h

Регистры на выходе:

Регистры не используются

Если ваша программа применяет для вывода на экран метод прямой записи в видеопамять, перед обновлением содержимого экрана необходимо погасить курсор, а после завершения обновления - высветить его опять.

Это связано с тем, что драйвер мыши запоминает старое значение атрибута символа, на который указывал курсор до обновления содержимого видеопамяти. Вы изменили атрибут, записав новое значение непосредственно в экранную память. Теперь, если установить курсор мыши на другой символ, изображение старого символа будет испорчено - появится прямоугольник (как бы еще одно изображение курсора мыши).

ПрограммаMscursor

Приведем исходный текст программы MSCURSOR (листинг 3.1), демонстрирующую применение описанных выше функций. Программа инициализирует мышь, делает видимым курсор мыши и прячет курсор после того как пользователь нажмет любую клавишу.

Листинг 3.1. Файлmscursor\mscursor.c

// =====================================================

// Включение и выключение курсора мыши

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW: http://www.glasnet.ru/~frolov

// или

// http://www.dials.ccas.ru/frolov

// =====================================================

#include <dos.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

int nButtons;

union REGS rg;

printf("MSCURSOR, (c) A. Frolov, 1997\n");

// Инициализируем мышь

rg.x.ax = 0;

int86(0x33, &rg, &rg);

if(rg.x.bx == 0)

{

printf("Mouse not found");

return -1;

}

// Сохраняем количество клавиш

nButtons = rg.x.bx;

printf("Mouse type: ");

switch (nButtons)

{

case 2:

{

printf("2-button mouse\n");

break;

}

case 3:

{

printf("2-button Mouse Systems\n");

break;

}

case 0:

{

printf("Unknown type %d\n", nButtons);

break;

}

default:

{

printf("Unknown type %d\n", nButtons);

break;

}

}

// Включаем курсор и ожидаем, пока пользователь

// нажмет на клавишу

rg.x.ax = 1;

int86(0x33, &rg, &rg);

printf("Mouse cursor on. Press any key\n");

getch();

// Выключаем курсор

rg.x.ax = 2;

int86(0x33, &rg, &rg);

printf("Mouse cursor off. Press any key\n");

getch();

return 0;

}

Соседние файлы в папке несколько программ