Mensaje WM_COMMAND

Se envía cuando el usuario selecciona un elemento de comando en un menú, cuando un control envía un mensaje de notificación a su ventana primaria o cuando se traduce una pulsación de tecla de aceleración.

#define WM_COMMAND                      0x0111

Parámetros

wParam

Para obtener una descripción de este parámetro, vea Observaciones.

lParam

Para obtener una descripción de este parámetro, vea Observaciones.

Valor devuelto

Si la aplicación procesa este mensaje, debe devolver cero.

Ejemplo

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;
}

Ejemplo tomado de ejemplos clásicos de Windows en GitHub.

Comentarios

Aquí se resume el uso de los parámetros wParam y lParam.

Fuente del mensaje wParam (palabra inferior) wParam (palabra superior) lParam
Menu 0 Identificador de menú (IDM_*) 0
Acelerador 1 Identificador del acelerador (IDM_*) 0
Control Código de notificación definido por el control Identificador de control Controlador de la ventana de control

Si una aplicación habilita un separador de menús, el sistema envía un mensaje WM_COMMAND con la palabra inferior del parámetro wParam establecido en cero cuando el usuario selecciona el separador.

Si se define un menú con un valor MENUINFO.dwStyle de MNS_NOTIFYBYPOS, se envía WM_MENUCOMMAND en lugar deWM_COMMAND .

Aceleradores

Las pulsaciones de tecla del acelerador que seleccionan elementos del menú de la ventana se traducen en mensajes WM_SYSCOMMAND.

Si se produce una pulsación de tecla de aceleración que corresponde a un elemento de menú cuando se minimiza la ventana que posee el menú, no se envía ningún mensaje WM_COMMAND. Sin embargo, si se produce una pulsación de tecla de aceleración que no coincide con ninguno de los elementos del menú de la ventana o en el menú de la ventana, se envía un mensaje WM_COMMAND, incluso si la ventana está minimizada.

Requisitos

Requisito Valor
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Winuser.h (incluya Windows.h)

Consulte también

Referencia

HIWORD

LOWORD

Conceptual

Menús