4.2.8. Установка области гашения Иногда желательно задать на экране область, при попадании в которую курсор мыши автоматически гасится. Для этого используется функция БеШісІеІІагще. Но при выходе курсора из области гашения он не восстанавливается. Поэтому для восстановления нормальной работы курсора необходимо вызвать функцию БІюшМоизеСигБог, независимо от того, попал ли курсор в область гашения или нет.
4.2.9. Установка обработчика событий Вместо того чтобы все время опрашивать драйвер мыши, можно передать драйверу адрес функции, которую нужно вызывать при наступлении заданных событий. Для установки этой функции следует воспользоваться функцией БеЦМоиБеНапсИег, где в качестве первого параметра выступает указатель на функцию, а второй параметр задает события, при наступлении которых переданную функцию следует вызвать. События задаются посредством битовой маски. Возможные события определяются при помощи символических констант МОи8Е_МОУЕ__МА8К, МОиБЕ_ ЬВиТТО]М_РіЯЕ88 и др. Требуемые условия соединяются побитовой операцией ИЛИ. Передаваемая функция получает 4 параметра - маску события, повлекшего за собой вызов функции, маску состояния кнопок мыши и текущие коор4. Работа с основными графическими устройствами динаты курсора. По окончании работы программы необходимо обязательно убрать обработчик событий (при помощи функции removeMouseHandler).
Ниже приводится пример простейшей программы, устанавливающей обработчик событий мыши на нажатие правой кнопки мыши и задающей свою форму курсора.
0 // File moustest.cpp #include <bios.h> #include <conio.h> #include "mouse.h"
unsigned short andMask [] = {
OxOFFF, 0x07FF, 0x01 FF, 0x007F, 0x801 F, 0xC007, 0xC001, OxEOOO, OxEOFF, OxFOFF, OxFOFF, 0xF8FF, 0xF8FF, OxFCFF, OxFCFF, OxFEFF
};
unsigned short xorMask [] = {
0x0000, 0x6000, 0x7800, ОхЗЕОО, 0x3F80, 0x1 FE0, 0x1 FF8, OxOFFE, OxOFOO,0x0700, 0x0700, 0x0300, 0x0300, 0x0100, 0x0100, 0x0000,
};
CursorShape cursor ( andMask, xorMask, Point (1,1));
int doneFlag = 0;
void setVideoMode (int mode ) {