Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория»
Книгу Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория» читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!
Шрифт:
Интервал:
Закладка:
Case 2: Debug.Print "Нажата клавиша Ctrl"
Case 3: Debug.Print "Нажаты клавиши Shift, Ctrl"
Case 4: Debug.Print "Нажата клавиша Alt"
Case 5: Debug.Print "Нажаты клавиши Shift, Alt"
Case 6: Debug.Print "Нажаты клавиши Ctrl, Alt"
Case 7: Debug.Print "Нажаты клавиши Shift, Ctrl, Alt"
End Select
'Определяем координаты острия курсора мыши во время нажатия:
Debug.Print "Х="; X, "Y="; Y
End Sub
В численном значении Shift есть система. Посмотрите в процедуре, чему "равны" клавиши Shift, Ctrl, Alt по одиночке. 1, 2 и 4. Так вот, их совместное нажатие "равно" их сумме. Убедитесь.[27]
Поместите на форму несколько разных объектов. Обратите внимание, что при щелчке по ним процедура не срабатывает. Это естественно, у каждого объекта есть свое событие MouseDown.
Событие MouseUp работает аналогично.
Пример программы:
Вот программа для поставленной выше задачи на точность руки и глаза:
Dim Х_кружка As Integer
Dim Y_Kpy>KKa As Integer
Dim Расстояние_до_кружка As Double
Private Sub Form_Load()
Randomize
End Sub
'Процедура для создания мелькнувшего кружка:
Private Sub Command1_Click()
Х_кружка = 4000 * Rnd 'Определяем координаты кружка (центра кружка)
Y_кружка = 4000 * Rnd
ForeColor = vbBlack 'Чертим кружок черным цветом
Circle (Х_кружка, Y_кружка), 50
For i = 1 То 3000000: Next 'Пауза, чтобы мы успели заметить кружок
ForeColor = BackColor 'Стираем кружок цветом фона
Circle (Х_кружка, Y_Kpy>KKa), 50
End Sub
'Процедура для определения расстояния от щелчка до кружка:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Расстояние_до_кружка = Sqr ((X — Х_кружка) A 2 + (Y — Y_кружка)^2)
MsgBox ("Промах на " & Int(Расстояние_до_кружка) & " твип.")
End Sub
Пояснение того, как вычислялось расстояние (для тех, кто знает теорему Пифагора): Мысленно соедините отрезком прямой центр окружности и точку щелчка.
Это будет гипотенуза прямоугольного треугольника, катеты которого проведите вертикальной и горизонтальной линией. Нетрудно заметить, что горизонтальный катет равен X — Х_кружка, а вертикальный равен Y — У_кружка (знак я не учитываю). Гипотенуза же равна нужному нам расстоянию. Теорема Пифагора гласит, что квадрат гипотенузы равен сумме квадратов катетов. Отсюда, гипотенуза равна корню квадратному из суммы квадратов катетов (каковая формула и записана в программе).
Событие MouseMove
Это событие возникает, как только мы сдвигаем мышку с места, а во время движения мыши оно возникает постоянно и многократно. Оно похоже на событие MouseDown, но есть и отличия. Запустите и проверьте эту поясняющую программу:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Определяем, какие клавиши мыши удерживаются нажатыми во время движения:
Select Case Button
Case 0: Debug.Print "He нажата ни одна клавиша мыши"
Case 1: Debug.Print "Нажата левая клавиша"
Case 2: Debug.Print "Нажата правая клавиша"
Case 3: Debug.Print "Нажаты левая, правая клавиши"
Case 4: Debug.Print "Нажата средняя клавиша"
Case 5: Debug.Print "Нажаты левая, средняя клавиши"
Case 6: Debug.Print "Нажаты правая, средняя клавиши"
Case 7: Debug.Print "Нажаты левая, правая, средняя клавиши"
'Определяем, какие из трех клавиш клавиатуры (Shift, Ctrl, Alt) удерживаются нажатыми во время движения:
Select Case Shift
Case 0: Debug.Print "He нажата ни одна клавиша Shift, Ctrl, Alt'
Case 1: Debug.Print "Нажата клавиша Shift"
Case 2: Debug.Print "Нажата клавиша Ctrl"
Case 3: Debug.Print "Нажаты клавиши Shift, Ctrl"
Case 4: Debug.Print "Нажата клавиша Alt"
Case 5: Debug.Print "Нажаты клавиши Shift, Alt"
Case 6: Debug.Print "Нажаты клавиши Ctrl, Alt"
Case 7: Debug.Print "Нажаты клавиши Shift, Ctrl, Alt"
End Select
'Определяем, координаты острия курсора мыши во время движения:
Debug.Print "Х="; X, "Y="; Y
End Sub
Если событие MouseDown сообщает о нажатии какой-то одной клавиши мыши, то MouseMove сообщает о любой комбинации мышиных клавиш. Если событие MouseDown сообщает о событии нажатия какой-то клавиши, то MouseMove сообщает о состоянии мышиных клавиш (удерживаются нажатыми или нет).
Мышь рисует
Вот программа, превращающая мышку в карандаш:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
PSet (X, Y)
End Sub
Запустите ее и медленно ведите мышкой по форме. За мышкой остается нарисованный след.
Задание 110: Сделайте так, чтобы мышь рисовала только при нажатой левой клавише, что более привычно для всех, кто работал в графических редакторах.
Задание 111: Сделайте так, чтобы при щелчке по правой клавише толщина линии возрастала на 1.
Работа с клавиатурой
Поставим задачу сделать игру, где наш миниатюрный гоночный автомобиль будет под управлением клавиш клавиатуры нестись от старта до финиша. Для этого вам нужно познакомиться с событиями, связанными с клавиатурой. Их три: KeyDown (клавиша нажата), KeyUp (клавиша отпущена) и KeyPress.(по клавише щелкнули). Нас пока интересуют только первые два.
События KeyDown и KeyUp
Создайте проект из одной формы, без элементов управления. Зайдите в окно кода и выберите для объекта Form событие KeyDown. В появившуюся заготовку процедуры запишите следующий код:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'Определяем, какая клавиша клавиатуры была нажата:
Select Case KeyCode
Case vbKeyUp: Debug.Print "Нажата стрелка вверх"
Case vbKeyDown: Debug.Print "Нажата стрелка вниз"
Case vbKeyLeft: Debug.Print "Нажата стрелка налево"
Case vbKeyRight: Debug.Print "Нажата стрелка направо"
Case vbKeyW: Debug.Print "Нажата клавиша W"
Case vbKey7: Debug.Print "Нажата клавиша 7"
Case vbKeySpace: Debug.Print "Нажата клавиша пробела"
Case vbKeyDelete: Debug.Print "Нажата клавиша Delete"
Case vbKeyF4: Debug.Print "Нажата клавиша F4"
Case vbKeyAdd: Debug.Print "Нажата клавиша +"
Case vbKeyEscape: Debug.Print "Нажата клавиша Esc"
End Select
'Определяем, какие из трех клавиш клавиатуры (Shift, Ctrl, Alt) при этом были в нажатом состоянии:
Select Case Shift
Case 0: Debug.Print "He нажата ни одна клавиша Shift, Ctrl, Alt
Case 1: Debug.Print "Нажата клавиша Shift"
Case 2: Debug.Print "Нажата клавиша Ctrl"
Case 3: Debug.Print "Нажаты клавиши Shift, Ctrl"
Case 4: Debug.Print "Нажата клавиша Alt"
Case 5: Debug.Print "Нажаты клавиши Shift, Alt"
Case 6: Debug.Print "Нажаты клавиши Ctrl, Alt"
Case 76 Debug.Print "Нажаты клавиши Shift, Ctrl,
Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.
Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.
- 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
- 2. Просьба отказаться от оскорблений, угроз и запугиваний.
- 3. Просьба отказаться от нецензурной лексики.
- 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.
Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.
Оставить комментарий
-
Тамаринда21 июнь 12:33 Редко что-то цепляет, но тут было всё живое, жизненное, чувственное, сильное, читайте, не пожалеете о своём времени...... Хрупкая связь - Ольга Джокер
-
Гость Марина20 июнь 06:08 Книга очень понравилась, хотя и длинная. Героиня сильная личность. Да и герой не подкачал. ... Странная - Татьяна Александровна Шумкова
-
Гость ДАРЬЯ18 июнь 08:50 После 20й страницы не стала читать, очень жаль, но это огромный шаг назад, даже хуже - обнуление.... ... Пропавшая девушка - Тесс Герритсен