Поделиться через


сообщение WM_COMMAND

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

#define WM_COMMAND                      0x0111

Параметры

wParam

Описание этого параметра см. в разделе "Примечания".

lParam

Описание этого параметра см. в разделе "Примечания".

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

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

Example

BOOL AboutDlg (
    HWND hDlg,
    UINT message,
    WPARAM wParam,
    LPARAM lParam)
{
    BOOL bRet = FALSE;

    switch (message)
    {
        case WM_INITDIALOG:
            bRet = TRUE;
            break;

        case WM_COMMAND:
            if (wParam == IDOK ||
                wParam == IDCANCEL)
            {
                EndDialog(hDlg, TRUE);
                bRet = TRUE;
            }
            break;
    }

    return bRet;
}

Пример, взятый из классических примеров Windows на сайте GitHub.

Замечания

Здесь приведены сведения об использовании параметров wParam и lParam .

Источник сообщений wParam (высокое слово) wParam (низкое слово) lParam
Меню 0 Идентификатор меню (IDM_*) 0
Ускоритель 1 Идентификатор акселератора (IDM_*) 0
Контроль Код уведомления, определенный элементом управления Идентификатор элемента управления Дескриптор в окне управления

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

Если приложение включает разделитель меню, система отправляет сообщение WM_COMMAND с низким словом параметра wParam , которое равно нулю, когда пользователь выбирает разделитель.

Ускорители

Нажатия клавиш акселератора, которые выбирают элементы из меню окна, превратятся в сообщения WM_SYSCOMMAND .

Если нажатие клавиш акселератора соответствует элементу меню, когда окно, владеющее меню, свернуто, сообщение WM_COMMAND не отправляется. Однако если нажатие клавиш акселератора не соответствует ни одному из элементов в меню окна или в меню окна, отправляется сообщение WM_COMMAND , даже если окно свернуто.

Требования

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

См. также

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

HIWORD

LOWORD

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

Меню