Rolover | Дата: Вторник, 30.07.2013, 17:59 | Сообщение # 1 |
Лейтенант
Группа: Пользователи
Сообщений: 45
Статус: Offline
| GetMouse Наверное самый простой для понимания оператор (функция) для обработки событий мышки, в который передаются по ссылке параметры. x, y, kolesiko_vrashenie, knopki, clips
вот этот clips наверное самый непонятный .. для чего он??..толком перевести не удалось
приведу чуток модифицированный код из справочника.. можно так сказать пробы Код Dim As Integer x, y, wheels, buttons , clips, doble Screen 18,32,2 ScreenSet 1 Do Cls Getmouse (x, y,wheels, buttons, clips) '******новая часть********************************* ' IF buttons <> 3 THEN ' ? "buttons : " & buttons ; ' ELSE ' ?"buttons : 0 "; ' END IF ' ? ' ? "clips : " & clips ' ' ? "two buttons : "; ' ' if buttons = 3 THEN ' ? buttons; ' ELSEIF buttons <>1 and buttons <>2 and buttons <>4 THEN ' ? buttons; ' ELSE ? " 0"; ' END IF ' ? ' ? "x : " & x ' ? "y : " & y ' ? "kolesiko :" & wheels '**********конец новой части******************** 'стараячасть*******************************************
If x < 0 Then Print "Myshka vne okna" Else ' Print Using "Poziciya myshki: ###:### Buttons: "; x; y; If buttons And 1 Then Print "Levaya "; 'нулевой бит это 1-ца ... если устанавливается и левая кнопка мыши IF buttons And 2 Then Print "Pravaya "; 'первый бит это 2-ка клик правой кнопкой '******************************* 'IF buttons And 3 Then 'Print " Dve Knopki "; 'Else '? ""; 'END IF '******************************** If buttons And 4 Then Print "Kolesiko"; 'второй бит это 4-ка клик колесиком ' Print " " End If '******************************** 'Line(100,150) -(200,200),rgb(180,180,180),bf 'проверка координат курсора и если они в нужной нам области то закрашиваем квадрат другим цветом 'if (x > 100 and x<200 ) and (y>150 and y<200) then Line(100,150) - (200,200),rgb(150,150,250),bf '******************************** ScreenCopy Loop While InKey$ = "" End строки что закомментированы можно раскомментировать и посмотреть на результаты..
Оказывается кнопки передаются битовой маской buttons
бит значение 001 1 левая | 011 > 3 две кнопки сразу 010 2 правая |
100 4 колесико нажатие
Теперь понятно откуда эти все цифры 1, 2, 4
В примере больше всего удивила строка, их там несколько такого содержания.. но возьмем любую Код IF buttons And 2 Then Print "Pravaya "; 'первый бит это 2-ка клик правой кнопкой странно то что IF button AND 2 Если button не ноль И 2 А что это 2 ???? button = 2 или что другое равно 2-м но как ни странно это работает... как он так вообще может сравнивать ???? Да а если одновременно 2 кнопки нажать??? Та даже если запустите пример то сразу заметите что надпись Dve Knopki появляется при нажатии любой кнопки. Просто не понятно откуда он знает что после And надо проверять Buttons равно 2 или нет?
Объяснив другому, поймешь, что понял сам.
Сообщение отредактировал Rolover - Вторник, 30.07.2013, 18:01 |
|
| |
haav | Дата: Вторник, 30.07.2013, 22:06 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата вот этот clips наверное самый непонятный .. для чего он??..толком перевести не удалось
В этом параметре возвращается значение, которое указывает захватывает ли графическое окно мышь или нет. То есть если мы установим с помощью SetMouse в параметре clips значение 1 , то мышь не выходит за рамки окна (если конечно не применять переключение задач с помощью ALT+TAB, клавиши WIN и пр.)
Цитата (Rolover) странно то что IF button AND 2 Если button не ноль И 2 А что это 2 ???? button = 2 или что другое равно 2-м но как ни странно это работает... как он так вообще может сравнивать ???? Да а если одновременно 2 кнопки нажать??? Та даже если запустите пример то сразу заметите что надпись Dve Knopki появляется при нажатии любой кнопки. Просто не понятно откуда он знает что после And надо проверять Buttons равно 2 или нет?
Вообще-то то что находится между IF и THEN это одно условие. То есть данное выражение:
buttons AND 2
это результат работы битового оператора AND, к примеру:
buttons = 3 (нажаты 2 кнопки)
3 в битовом представлении 11 2 в битовом представлении 10
получается 11 AND 10
11 and (умножить каждый бит друг под другом стоящий) 10 --- 10 <- 2
Так определятся наверняка нажата ли кнопка , независимо нажата ли еще какая. Если мы применим:
if buttons = 2 then
то у нас при нажатии двух кнопок сразу получится if 3=2 then
что неверно и условие никогда не выполнится
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Rolover | Дата: Среда, 11.09.2013, 22:53 | Сообщение # 3 |
Лейтенант
Группа: Пользователи
Сообщений: 45
Статус: Offline
| Подскажите пожалуйста, а какими способами можно изменить внешний вид курсора мышки ??? просто хотелось бы его на "лету" менять
Объяснив другому, поймешь, что понял сам.
Сообщение отредактировал Rolover - Среда, 11.09.2013, 22:55 |
|
| |
haav | Дата: Четверг, 12.09.2013, 09:07 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата (Rolover) Подскажите пожалуйста, а какими способами можно изменить внешний вид курсора мышки ??? просто хотелось бы его на "лету" менять
Прячешь курсор с помощью SetMouse , определяешь его координаты с помощью GetMouse и рисуешь нужную картинку курсора по этим координатам.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |