Всем известен код перетаскивания формы за любое место.
- Код: Выделить всё
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 Sub ReleaseCapture Lib "User32" ()
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
Dim ReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
ReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub
Разбирая его у меня возникло несколько вопросов.
Функция ReleaseCapture - фиксирует указатель мыши в процедуре Form_MouseDown.
Это понятно.
Функция SendMessage - посылает сообщение окну, с определёнными параметрами.
И здесь всё ясно.
Теперь о самих параметрах.
- Me.hwnd - дескриптор нашего окна.
WM_NCLBUTTONDOWN - передоваемое сообщение.
HTCAPTION - дополнительное сообщение
Из всего этого, я сделал следующий вывод: при выполнении этого кода мы фактически перетаскиваем форму за заголовок, перехватив клик мыши на форме и зафиксировав её.
Правильно?
С уважением...