Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2011, 14:18   #1
Demonhunterus
Пользователь
 
Регистрация: 16.10.2010
Сообщений: 11
По умолчанию Работа с мышью (Assembler)

Возникли трудности с рабором работы мыши.
Конкретно по делу:
Код:
#include<conio.h>
#include<stdio.h>
int main()
{   int X,Y; 
int i=0;
unsigned char mask=1;
unsigned char SCAN;
int BUT;
int IS_ON;
clrscr();
asm {
     mov AX,3;
     int 0x33;
     mov X,CX;
     mov Y,DX;
     mov BUT,BX;
     mov AX,0;
     int 0x33;
     mov IS_ON,AX;
     }
printf ("%d,%d.\n",X,Y);

if (IS_ON==0x0FFFF)
printf ("Mouse Is On\n");
else
if (IS_ON==0x0000)
printf ("Mouse Is Off\n");

for(i=0;i<3;i++) {
if (mask & BUT)
{
  if (i==0)
  printf ("Left Mouse Button\n");
  if (i==1)
  printf ("Right Mouse Button\n");
  if (i==2)
  printf ("Middle Mouse Button\n");
}
mask=mask<<1;
}

asm { mov AH,0;
      int 0x16;
      mov SCAN,AH;
      }
if (SCAN==16)
asm { mov AX,2;
      int 0x33;
      }
getch();
return 0;
}
1)Вывод на экран координат X,Y
Код:
mov AX,3;
      int 0x33;
      mov X,CX;
      mov Y,DX;
      printf ("%d,%d.\n",X,Y);
Результат - координаты выводит.Но только почему-то они не всегда обновляются.Могу получить координаты,выйти из программы,переместить курсор мыши,снова запустить программу,но координаты останутся те же.А иногда меняются на другие.Не понятна причина.

2)Инициализация мыши IS_ON
Код:
mov AX,0;
      int 0x33;
      mov IS_ON,AX;
      if (IS_ON==0x0FFFF)
      printf ("Mouse Is On\n");
      else
      if (IS_ON==0x0000)
      printf ("Mouse Is Off\n");
Результат - работает корректно.Вроде бы.По крайней мере при подключенной к компьютеру мышке выдает Mouse Is On

3)Проверка на нажатие кнопки мыши BUT
Код:
mov BUT,BX;
      for(i=0;i<3;i++) {
      if (mask & BUT)
      {
      if (i==0)
      printf ("Left Mouse Button\n");
      if (i==1)
      printf ("Right Mouse Button\n");
      if (i==2)
      printf ("Middle Mouse Button\n");
      }
      mask=mask<<1;
      }
Результат - программа запущена,нажимаю кнопку мыши(правую/левую),сообщение не появлется.Подозреваю,что нужно,чтоб кнопка была нажата во время запуска программы,но с зажатой кнопкой мыши CTRL+F9 упорно не хочет запускать программу.Вопрос.Как сделать так,чтоб программа ожидала нажатия кнопки мыши,а затем выводила соответствующее сообщение о нажатой клавише?

4)Ну и последнее - при нажатии клавиши скрыть курсор мыши
Код:
asm { mov AH,0;
      int 0x16;
      mov SCAN,AH;
      }
      if (SCAN==16)
      asm { mov AX,2;
      int 0x33;
      }
Нажимаю q после запуска программы - ничего не происходит,а по-идее должен пропадать курсор.Что не так?
Кто может и захочет - хоть по какому-то вопросу дайте пояснения.Благодарю.

Все вопросы снимаются,спасибо.

Последний раз редактировалось Demonhunterus; 24.09.2011 в 19:35. Причина: разобрался
Demonhunterus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
РАбота с Мышью serg90 Работа с сетью в Delphi 5 19.02.2011 14:25
[C++] Работа с мышью koshkarjov Помощь студентам 0 14.10.2010 22:36
работа с мышью! _Timon Помощь студентам 1 20.01.2009 23:29
Работа с мышью Amery Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 28.05.2008 21:19