Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > Цветной курсор [DOS]


Автор: JAPH 30.1.2007, 20:26
Код

mov  ax, 0013h
int  10h
xor  ax, ax
int  33h

Дальше меняю форму курсора функцией 09h, только он получается белым smile
Как изменить его цвет (в идеале сделать разноцветным)? smile 

Автор: Anarki 1.5.2007, 18:46
А что делает int 33?
И к чему остальной код?

Автор: JAPH 1.5.2007, 20:15
Зачем целиком цитировать предыдущий пост?!

INT 33h при AX=0 инициализирует мышь. После этого прерывания с ней можно работать.
Какой остальной код?

Автор: Anarki 2.5.2007, 16:09
Немного не досмотрел название темки smile

А так я думаю написать свой код вывода курсора мыши на экран в графическом режиме и его установить как обработчик события перемещения через функцию 000CH INT 33H 

Цитата

3.3.13. Установить драйвер событий 
На входе:     AX = 000Ch;

              CX = маска вызова:
                бит 0 - вызов при перемещении мыши;
                бит 1 - вызов при нажатии левой клавиши;
                бит 2 - вызов при отпускании левой
                                клавиши;
                бит 3 - вызов при нажатии правой клавиши;
                бит 4 - вызов при отпускании правой
                                клавиши;
                бит 5 - вызов при нажатии средней клавиши;
                бит 6 - вызов при отпускании
                                средней клавиши;
                7Fh   - вызов при любом событии;
                00h   - отключение драйвера событий;

               ES:DX = адрес (дальний) подключаемого
                        драйвера событий.

На выходе:     Регистры не используются.



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

Адрес подготовленной программы-драйвера передается при вызове функции в регистровой паре ES:DX. Драйвер должен быть оформлен в виде дальней процедуры, завершающейся командой дальнего возврата RETF. Когда драйвер получает управление, в регистрах процессора содержатся следующие значения: 
AX      Маска вызова, такая же, как и при вызове
        функции 0Ch.

BX      Состояние клавиш мыши:

                бит 0 - левая клавиша;
                бит 1 - правая клавиша;
                бит 2 - средняя клавиша.

CX      Горизонтальная координата курсора мыши.

DX      Вертикальная координата курсора мыши.

SI      Относительное перемещение мыши по горизонтали
        в миках.

DI      Относительное перемещение мыши по вертикали
        в миках.

DS      Сегмент данных драйвера мыши.



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

Отметим, что если вам необходимо отключить драйвер, выполните повторный вызов функции 0Ch, записав в регистр CX нулевое значение. Если ваша программа, устанавливающая собственный драйвер событий, завершает свою работу и передает управление MS-DOS, предварительно она обязательно должна отключить драйвер событий.

© http://www.frolov-lib.ru/books/bsp/v02/ch3.htm

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)