Сообщение WM_EXITMENULOOP

Const WM_EXITMENULOOP = &H212

Сообщение WM_EXITMENULOOP сообщает основной оконной процедуре приложения, что меню из модального цикла вышло. Окно получает это сообщение через функцию обратного вызова WindowProc

Возвращаемое значение

Сообщение WM_EXITMENULOOP всегда возвращает 0

Параметры

wParam
Устанавливает, является ли меню контекстным меню. Этот параметр имеет значение TRUE, если это - контекстное меню, и FALSE, если это - не так
lParam
Не используется - установите в 0

Пример

' Поместите код в модуль,
' т.к. используется функция обратного вызова
Public OldWindowProc As Long

Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
         (ByVal lpPrevWndFunc As Long, _
          ByVal hwnd As Long, _
          ByVal msg As Long, _
          ByVal wParam As Long, _
          ByVal lParam As Long) As Long

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
         (ByVal hwnd As Long, _
          ByVal nIndex As Long, _
          ByVal dwNewLong As Long) As Long
          
Public Const GWL_WNDPROC = (-4)

Const WM_EXITMENULOOP As Long = &H212

Public Function WindowProc(ByVal hwnd As Long, _
ByVal msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

    If msg = WM_EXITMENULOOP Then
        Form1.BackColor = vbRed
    End If

    WindowProc = CallWindowProc( _
        OldWindowProc, hwnd, msg, wParam, _
        lParam)
End Function

' Поместите код в событие Form_Load
OldWindowProc = SetWindowLong( _
        hwnd, GWL_WNDPROC, _
        AddressOf WindowProc)

Категория

Меню