Вопрос № 100516: Здравствуйте!
Хотел спросить, как на языке Visual Basic (6 версия) можно запрограммировать мышь ?
Например, такая программа:
Нужно нарисовать круг, линию, точку, что угодно и управлять ей мышью, т.е. водишь мышью, и он бегает по экрану.<b...
Вопрос № 100.516
Здравствуйте!
Хотел спросить, как на языке Visual Basic (6 версия) можно запрограммировать мышь ?
Например, такая программа:
Нужно нарисовать круг, линию, точку, что угодно и управлять ей мышью, т.е. водишь мышью, и он бегает по экрану.
Вопрос: как мне это сделать ?
Если Вам, конечно, не сложно, пожалуйста, приведите пример такой программы (программы в виде кода), только, если можно, поподробнее, а то я это в первый раз делаю.
Буду очень длагодарен за помощь!
Отвечает: Черников Игорь Владимирович
Здравствуйте, Красильников И.П.!
Создайте новый проект с простой формой и вставьте туда этот код. Рисовать правой кнопкой, перемещать нарисованное - левой. Подробности по почте или по майлагенту. Удачи!
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
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
--------- От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 4-ый класс)
Ответ отправлен: 02.09.2007, 16:18 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за ответ! Увы, но возникла одна маленькая проблема: Я создал форму, назвал её "форма1" и когда я стал рисовать, то когда я отпускаю правую кнопку мыши, он мне выводт ошибку: "Compile error: Variable not defined" Как думаете, в чём проблема ? Благодарю!
Отвечает: Шишкин Максим Алексеевич
Здравствуйте, Красильников И.П.!
вообще, нужно код привязать к процедуре, передвижение указателя мыши... и в немузнавать координаты мыши, и присваивать их кругу или линии и т.д.
можно по нажатию кнопки мыши сделать...
с кодом программы к сожалению помочь не могу...
--------- Мы не ищем легких путей.... они сами нас находят:)
Ответ отправил: Шишкин Максим Алексеевич (статус: 1-ый класс)
Ответ отправлен: 03.09.2007, 03:21 Оценка за ответ: 4 Комментарий оценки: Благодарю за информацию!