сообщение WM_MENUSELECT

Отправляется в окно владельца меню, когда пользователь выбирает пункт меню.

#define WM_MENUSELECT                   0x011F

Параметры

wParam

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

Слово высокого порядка задает один или несколько флагов меню. Этот параметр может быть одним или несколькими из следующих значений.

Ценность Meaning
MF_BITMAP
0x000000004L
Элемент отображает растровое изображение.
MF_CHECKED
0x000000008L
Проверяется элемент.
MF_DISABLED
0x000000002L
Элемент отключен.
MF_GRAYED
0x000000001L
Элемент серый.
MF_HILITE
0x00000080L
Элемент выделен.
MF_MOUSESELECT
0x00008000L
Элемент выбран с помощью мыши.
MF_OWNERDRAW
0x00000100L
Элемент является элементом, нарисованным владельцем.
MF_POPUP
0x00000010L
Элемент открывает раскрывающееся меню или подменю.
MF_SYSMENU
0x00002000L
Элемент содержится в меню окна. Параметр lParam содержит дескриптор меню, связанное с сообщением.

lParam

Дескриптор главного меню.

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

Если приложение обрабатывает это сообщение, оно должно возвращать ноль.

Замечания

Это сообщение отправляется в окно владельца меню, когда пользователь выбирает пункт меню в открытом меню, как правило, с помощью мыши или навигации по клавиатуре. Если меню закрыто, это сообщение не отправляется, когда пользователь перемещает указатель мыши на элемент меню верхнего уровня. Это сообщение отправляется только после открытия меню пользователем, щелкнув элемент меню верхнего уровня или нажав клавиши ALT .

Это важно

Когда пользователь щелкает элемент меню или нажимает клавишу ВВОД , чтобы вызвать выбранный пункт меню, в окне отправляется сообщение WM_COMMAND или WM_MENUCOMMAND в зависимости от значения элемента dwStyle структуры MENUINFO в меню. Используйте эти сообщения для выполнения действия при вызове выбранной команды.

Если слово с высоким порядком wParam содержит 0xFFFF, а параметр lParam содержит значение NULL, система закрыла меню.

Не используйте значение -1 для слова wParam с высоким порядком, так как это значение указано как (UINT) HIWORD(wParam). Несмотря на то, что 0xFFFF могут быть интерпретированы как -1 в подписанных контекстах, если значение 0xFFFF, оно будет интерпретировано как 0x0000FFFF, а не -1 из-за приведения к UINT.

Например, этот код проверяет наличие 0xFFFF, а не -1:

case WM_MENUSELECT:
{
    UINT menuItem = LOWORD(wParam);
    UINT flags = HIWORD(wParam);
    HMENU hMenu = (HMENU)lParam;

    // Check for 0xFFFF, not -1.
    if (flags == 0xFFFF && hMenu == NULL) {
        // No menu item selected (menu closed).
        // ...
    }
    break;
}

Требования

Требование Ценность
Минимальный поддерживаемый клиент
Windows 2000 Профессиональный [только классические приложения]
Минимальный поддерживаемый сервер
Windows 2000 Server [только классические приложения]
Header
Winuser.h (включая Windows.h)

См. также

Справочные материалы

GetSubMenu

HIWORD

LOWORD

Концептуальный

Ускорители клавиатуры