Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Перемещение формы


Автор: korob2001 23.11.2004, 21:19
Привет!
У меня такой вопрос:
Есть форма ( Form1 ), параметр BorderStyle = 0-None. Скажите, как перемещать такую форму?
Пробовал заюзать обработчик события MouseMove. Таким образом:
Код

Private Sub Form_MouseMove(Button As Integer, _
                                               Shift As Integer, _
                                               X As Single, _
                                               Y As Single)
           If Button = vbLeftButton Then
              Move X, Y
           End If
End Sub

Результат просто ужасный. Вроде работает, но при движении форма как бы раздваивается, да и шлейф после неё остается. smile((
Затем попробовал изменить код этой процедуры на такой:
Код

If Button = vbLeftButton Then
              Move X - ( X - Form1.Left ), Y - ( Y - Form1.Top )
End If

Но с таким вариантом, форма вообще остается как вкопанная. smile
Подскажите, как добиться нормального перемещения такой формы?

Зарананее спасибо,
Денис

Автор: Vach 23.11.2004, 23:44
Код
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, _
 ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Call ReleaseCapture
   Call SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End Sub
Удачи.

Автор: cardinal 24.11.2004, 01:48
FAQ читать надо smile
http://forum.vingrad.ru/index.php?showtopic=22274

Автор: korob2001 24.11.2004, 11:45
Большое спасибо.
Cardinal - извини, не досмотрел. ;))))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)