TopPicLogo TopPicText

Открытие формы по координатам курсора

... Очевидно такая функция может пригодиться для написания своих "псевдо-контекстных" меню. Или еще для чего-нибудь. Итак, покопавшись в API функциях я нашел решение этой проблемы.

Вставляем следующий код в модуль формы и она всегда будет открываться с "привязкой" к курсору.


Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function GetCursorPos Lib "user32.dll" (lpPoint As POINT_TYPE) As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, lpRect As Rect) As Long

Private Type POINT_TYPE
x As Long
y As Long
End Type

Private Type Rect
    left As Long
    top As Long
    right As Long
    bottom As Long
End Type

Private Sub Form_Open(Cancel As Integer)
Dim coord As POINT_TYPE     'координаты курсора
Dim retval As Long          'возвращаемое значение
Dim r As Rect               'размеры окна
    retval = GetCursorPos(coord) 'считываем позицию курсора
    retval = GetWindowRect(Me.hwnd, r) 'считываем размеры текущего окна
    ' Перемещаем окно формы по позиции курсора
    retval = MoveWindow(Me.hwnd, coord.x, coord.y, r.right - r.left, r.bottom - r.top, 1)
End Sub

Назад ToTop
L.E. 16.11.2012
Рейтинг@Mail.ru