Ограничить движение мыши.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Ограничить движение мыши.

Сообщение Saturn.65 » 18.04.2010 (Вс) 7:30

Мышь, при нажатой левой кнопке (перетаскивание объектов на форме) должна быть ограничена в движении. Если например я перетаскиваю прямоугольник по форме и он уперся в край формы, то курсор должен двигаться в любую сторону, но не в сторону формы, куда уперся прямоугольник. При отпускании кнопки курсор двигается в любом направлении. Я могу засечь тот момент, когда прямоугольник коснется границ, но как это прописать в ограничение движения мыши?
Вот знаки ограничения движения. Если фигуру перетаскивать выше или ниже установленных границ, то будет выводится сообщение.
Код: Выделить всё
If (sh(mInd).Top <= 224 + Val(Text2.Text)) Then
Text1.Text = "Выше границы!"
End If

If (sh(mInd).Top > 331 - (Val(Text2.Text)) / 4) Then
Text1.Text = "Ниже границы!"
End If


Это код ограничения движения мыши в рамках формы.
Код: Выделить всё
Private Declare Function ClipCursor& Lib "user32" (lpRect As RECT)
Private Declare Function FreeCursor& Lib "user32" Alias "ClipCursor" (ByVal Zero&)
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private R As RECT

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
With R
.Bottom = (Top + Height) / Screen.TwipsPerPixelY
.Left = Left / Screen.TwipsPerPixelX
.Right = (Left + Width) / Screen.TwipsPerPixelX
.Top = Top / Screen.TwipsPerPixelY
End With
ClipCursor R
End If
If Button = 0 Then
FreeCursor 0
End If

End Sub
Private Sub Form_Unload(Cancel As Integer)
FreeCursor 0
End Sub
Главное, ребята, сердцем не стареть...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Ограничить движение мыши.

Сообщение Хакер » 18.04.2010 (Вс) 10:09

Клип надо ставить в момент опускания кнопки мыши и установки захвата.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 68

    TopList