Программирование игр для Windows. Советы профессионала


Мышь - часть 2


Бит 2 - центральная кнопка: 1 - нажата, 0 - не нажата

СХ -  Х-координата курсора

DX - Y-координата курсора

Функция 0Bh - возвратить относительную позицию мыши

Вход:     AX: 000Bh

Выход:  СХ - относительное горизонтальное движение в mickey

DX - относительное вертикальное движение в mickey

Функция 1Ah - установить чувствительность

Вход: AX: 00lAh

Выход: ВХ - чувствительность по оси Х (0-100)

СХ - чувствительность по оси Y (0-100)

DX - значение скорости, при которой чувствительность возрастает в 2 раза (0-100)

Как видите, функции драйвера вызываются через прерывание 33h. Мы записываем параметр в регистр АХ .и получаем результат в регистрах АХ, ВХ, СХ и DX. Я написал простую функцию для работы с мышью, она называется Squeeze_Mouse(). Эта функция может выполнять много действий — все зависит от передаваемых параметров. Прототип функции:

int Squeeze_Mouse(int command, int *x, int *y, int *buttons) ;

 

Кроме этого, я сделал несколько описаний, чтобы упростить работу с ней:

#define MOUSE_INT             0х33 // номер

прерывания

#define MOUSE_RESET           0х00 // сброс

мыши

#define MOUSE_SHOW            0х01 // показать

мышь

#define MOUSE_HIDE            0х02 // погасить

мышь

#define MOUSE BUTT_POS        0х03 // возвратить координаты

//и количество кнопок

#define MOUSE_SET_SENSITIVITY 0x1A // установить

//чувствительность

//в пределах 0-100

#define MOUSE_MOTION_REL      0x0B // установить

// относительную

// чувствительность

Таким образом, если мы хотим получить координаты мыши, то должны написать следующее:

 

Squeeze Mouse(MOUSE_BUTT_POS, &mouse_x, &mouse_y, &mouse_buttons);

 

где mouse_x, mouse_y и mouse_buttons - локальные переменные для сохранения результатов.

 

Теперь обратим внимание на два способа, используемые для передачи координат мыши:

§          Драйвер мыши может возвращать абсолютные координаты. В этом случае значения Х и Y являются координатами мыши на экране.


Начало  Назад  Вперед