Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Работа с мышью (Assembler)  (Прочитано 40801 раз)
0 Пользователей и 1 Гость смотрят эту тему.
demonhunterus
Интересующийся

ua
Offline Offline

« Ответ #30 : 25-09-2011 13:34 » 

Начало цикла
  Если результат mask & BUT не true
  Делаем смещение маски на 1 влево
  В противном случае (если true)
  Печатаем вариант,соответствующий текущему значению i
Выход из цикла
Как-то так по-моему.  
Хотя намудрил что-то.

Код:
for (i=0;i<3;i++) {
if (mask & BUT)
switch (i) {
case 0:
        { printf("Left Mouse Button Was Pressed\n");
          break; }
 case 1:
        { printf("Right Mouse Button Was Pressed\n");
          break; }
 case 2:
        { printf("Middle Mouse Button Was Pressed\n");
          break; }
}
mask=mask<<1 }
Сейчас проверю
« Последнее редактирование: 25-09-2011 13:40 от demonhunterus » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #31 : 25-09-2011 13:45 » 

первый шаг mask = 1
mask && BUT - ?

продолжи.... (еще два шага)

зы чего хочу? Избавиться от цикла.
« Последнее редактирование: 25-09-2011 13:47 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
demonhunterus
Интересующийся

ua
Offline Offline

« Ответ #32 : 25-09-2011 13:47 » 

Код:
                            for (i=0;i<3;i++)
                             {
                              if (mask & BUT)
                                  switch (i)
                                   {
                                    case 0:
                              { printf("Left Mouse Button Was Pressed\n");
                                break; }
                                    case 1:
                              { printf("Right Mouse Button Was Pressed\n");
                                break; }
                                    case 2:
                              { printf("Middle Mouse Button Was Pressed\n");
                                break; }
                                    }
                           mask=mask<<1;
                            }
Вот так работает.
Но опять же
Код:
 for (i=0;i<3;i++)
                             {
                              if (mask & BUT)
                                  switch (i)
                                   {
                                    case 0:
                              { printf("Left Mouse Button Was Pressed\nPress Any Key To Return To Menu\n");
                                getch();
                                goto METKA; }
                                    case 1:
                              { printf("Right Mouse Button Was Pressed\nPress Any Key To Return To Menu\n");
                                getch();
                                goto METKA; }
                                    case 2:
                              { printf("Middle Mouse Button Was Pressed\nPress Any Key To Return To Menu\n");
                                getch();
                                goto METKA; }
                                    }
                           mask=mask<<1;
                            }
 при использовании трех GoTo не хочет работать.При двух - работает.При трех - ни в какую.


Ааа.Избавиться от цикла.Хм.
mask=1
mask & BUT  - ну вернет true или false.если false надо mask<<=1 и снова mask & BUT.Если true - узнать какая маска была в этот момент и в соответствии с этим значением вывести сообщение о нажатой клавише...Как-то так...

Что-то я совсем запутался.
Что два шага осталось,это хорошо,но я не понял что имелось ввиду тут "mask && BUT - ?"
« Последнее редактирование: 25-09-2011 14:03 от demonhunterus » Записан
demonhunterus
Интересующийся

ua
Offline Offline

« Ответ #33 : 08-10-2011 06:23 » 

Решил проблему с помощью свич кейса
Код:
case 5:
                 {
                 int a=0;
                 do {

                     asm { mov AX,3;
                           int 0x33;
                           mov BUT,BX; }

                     if (a!=BUT)  {
                        switch(BUT) {
                        case 1:
                              printf("Left Mouse Button Was Pressed\n");
                              break;
                        case 2:
                              asm { MOV AH,2
                                    MOV DL,7
                                    int 0x21
                                     }
                              printf("Right Mouse Button Was Pressed\n");
                              break;
                        case 4:
                              printf("Middle Mouse Button Was Pressed\n");
                              break;
                              }

                            }
                   a=BUT;
                   BUT=0; }

                   while(!kbhit());
                      }
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #34 : 08-10-2011 06:59 » 

>Решил проблему с помощью свич кейса
Вот-Вот. И код стал читабельным.

зы Для админов. Не склеивайте здесь два поста подряд.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines