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
-
wParam
-
Para obtener una descripción de este parámetro, vea Observaciones.
-
lParam
-
Para obtener una descripción de este parámetro, vea Observaciones.
Si la aplicación procesa este mensaje, debe devolver cero.
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.
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 .
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.
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 |
|