Консультация № 100516
02.09.2007, 10:09
0.00 руб.
0 2 2
Здравствуйте!
Хотел спросить, как на языке Visual Basic (6 версия) можно запрограммировать мышь ?
Например, такая программа:
Нужно нарисовать круг, линию, точку, что угодно и управлять ей мышью, т.е. водишь мышью, и он бегает по экрану.
Вопрос: как мне это сделать ?
Если Вам, конечно, не сложно, пожалуйста, приведите пример такой программы (программы в виде кода), только, если можно, поподробнее, а то я это в первый раз делаю.
Буду очень длагодарен за помощь!

Обсуждение

Неизвестный
02.09.2007, 16:18
общий
это ответ
Здравствуйте, Красильников И.П.!
Создайте новый проект с простой формой и вставьте туда этот код. Рисовать правой кнопкой, перемещать нарисованное - левой. Подробности по почте или по майлагенту. Удачи!

Dim ПрвКнНажата As Boolean
Dim ЛевКнНажата As Boolean
Dim minX As Double
Dim maxX As Double
Dim minY As Double
Dim maxY As Double
Dim записьX As String
Dim записьY As String
Dim МоментНажатияX As Double
Dim МоментНажатияY As Double
Dim МоментОтпусканияX As Double
Dim МоментОтпусканияY As Double

Private Sub Form_Load()‘Событие происходит при запуске формы
AutoRedraw = -1 ‘Разрешем рисвать на форме
DrawWidth = 10 ‘Устанавливаем толщину точек рисования (можно менять)
ПрвКнНажата = False
ЛевКнНажата = False
minX = Форма1.Width
minY = Форма1.Height
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘При нажатии кнопки мышки

If Button = vbRightButton Then ‘Если правая кнопка
ПрвКнНажата = True
End If

If Button = vbLeftButton Then ‘Если левая кнопка
МоментНажатияX = X ‘Запоминаем координаты нажития
МоментНажатияY = Y
End If

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘При отпускании кнопки мыши

If Button = vbRightButton Then ‘Если правая кнопка отпущена
ПрвКнНажата = False
End If

If Button = vbLeftButton Then ‘Если левая
МоментОтпусканияX = X
МоментОтпусканияY = Y
РазницаX = МоментНажатияX - МоментОтпусканияX
РазницаY = МоментНажатияY - МоментОтпусканияY
minX = minX - РазницаX
minY = minY - РазницаY
maxX = maxX - РазницаX
maxY = maxY - РазницаY
ПереЗаписьX = ""
ПереЗаписьY = ""
ОдинСимвол = " "
символX = 0
символY = 0
Форма1.Cls ‘Очищаем форму

Do While ОдинСимвол <> "" ‘Цикл пока ОдинСимвол не равен пустой строке
символX = символX + 1
ОдинСимвол = Mid(записьX, символX, 1) ‘Читаем из строковой переменной записьX по одному символу. СимволX - порядковый номер символа
If ОдинСимвол = Chr(10) Then ‘Если ОдинСимвол равен переносу на другую строку, то
ОдинСимвол = " "
Do While ОдинСимвол <> Chr(10) ‘Цикл пока ОдинСимвол не равен переносу
символY = символY + 1
ОдинСимвол = Mid(записьY, символY, 1)
If ОдинСимвол = Chr(10) Then
НовыйX = CDbl(СтарыйX) - РазницаX ‘CDbl - преобразует строковую переменную к типу Dooble
НовыйY = CDbl(СтарыйY) - РазницаY
PSet (НовыйX, НовыйY), QBColor(12) ‘Рисуем точку с новыми координатами. 12 - цвет, можно менять
ПереЗаписьX = ПереЗаписьX + CStr(НовыйX) + Chr(10) ‘Cstr - преобразует переменную НовыйX к типу String, Chr(10) - знак преноса на другую строку
ПереЗаписьY = ПереЗаписьY + CStr(НовыйY) + Chr(10)
СтарыйX = ""
СтарыйY = ""
Else
СтарыйY = СтарыйY + ОдинСимвол ‘Добавляем символ к переменной (восстанавливаем координату)
End If
Loop
Else
СтарыйX = СтарыйX + ОдинСимвол
End If
Loop
записьX = ПереЗаписьX ‘Копируем все новые координаты всех точек в переменную
записьY = ПереЗаписьY
End If

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘При перемещении мышки. ‘X, Y - текущие координаты мышки

If ПрвКнНажата = True Then
PSet (X, Y), QBColor(12) ‘Рисуем точку
If X < minX Then minX = X
If X > maxX Then maxX = X
If Y < minY Then minY = Y
If Y > maxY Then maxY = Y
записьX = записьX + CStr(X) + Chr(10)‘Записываем все координаты точек и добавляет перенос
записьY = записьY + CStr(Y) + Chr(10)
End If

If maxX > X And minX < X And maxY > Y And minY < Y Then
MousePointer = 15 ‘Меняем курсор в пределах этих координат
Else
MousePointer = 0
End If

End Sub
Неизвестный
03.09.2007, 03:21
общий
это ответ
Здравствуйте, Красильников И.П.!
вообще, нужно код привязать к процедуре, передвижение указателя мыши... и в немузнавать координаты мыши, и присваивать их кругу или линии и т.д.
можно по нажатию кнопки мыши сделать...
с кодом программы к сожалению помочь не могу...
Форма ответа