Mensaje WM_SYSCOMMAND
Definición
WM_SYSCOMMAND uCmdType = wParam; // tipo de comando de sistema pedido xPos = LOWORD(lParam); // posición horizontal, en coordenadas de pantalla yPos = HIWORD(lParam); // posición vertical, en coordenadas de pantalla
Una ventana recibe este mensaje cuando el usuario elige un comando desde el menú de ventana (también conocido como menú de sistema o de control) o cuando el usuario pulsa el botón de maximizar o minimizar.
Descripción
uCmdType: indica el tipo de comando de sistema pedido. Puede ser uno de los siguientes valores:
Valor | Significado |
---|---|
SC_CLOSE | Cierra la ventana. |
SC_CONTEXTHELP | Cambia el cursor al signo de interrogación con un puntero. Si el usuario hace click en un control en el cuadro de diálogo, el control recibirá un mensaje WM_HELP. |
SC_DEFAULT | Selecciona el elemento por defecto; el usuario hizo doble click en el menú de sistema. |
SC_HOTKEY | Activa la ventana asociada con la acción especificada en el "hot key". La palabra de menor peso del parámetro lParam identifica la ventana a activar. |
SC_HSCROLL | Desplaza el contenido de la ventana horizontalmente. |
SC_KEYMENU | Recupera el menú del sistema como resultado de la pulsación de una tecla. |
SC_MAXIMIZE (o SC_ZOOM) |
Maximiza la ventana. |
SC_MINIMIZE (o SC_ICON) |
Minimiza la ventana. |
SC_MONITORPOWER | Sólo para Windows 95: ajusta el estado del monitor. Este comando soporta dispositivos que tengan propiedades de ahorro de energía, como las baterías de un ordenador portátil. |
SC_MOUSEMENU | Recupera el menú del sistema como resultado de un click del ratón. |
SC_MOVE | Mueve la ventana. |
SC_NEXTWINDOW | Cambia a la siguiente ventana. |
SC_PREVWINDOW | Cambia a la ventana anterior. |
SC_RESTORE | Recupera el tamaño y posición normales de la ventana. |
SC_SCREENSAVE | Ejecuta la aplicación de salva pantallas especificada en la sección [boot] del fichero SYSTEM.INI. |
SC_SIZE | Cambia el tamaño de la ventana. |
SC_TASKLIST | Ejecuta o activa el gestor de tareas de Windows. |
SC_VSCROLL | Desplaza el contenido de la ventana verticalmente. |
xPos: indica la posición horizontal del cursor en coordenadas de pantalla, si se eligió un comando del menú del sistema con el ratón. De otro modo, este parámetro no se usa.
yPos: indica la posición vertical del cursor en coordenadas de pantalla, si se eligió un comando del menú del sistema con el ratón. Este parámetro es -1 si el comando fue elegido mediante un acelerador o cero si fue usando un mnemónico.
Valor de retorno
Una aplicación que procese este mensaje debe retornar con cero.
Observaciones
La función DefWindowProc ejecuta las acciones predefinidas de las peticiones del menú del sistema de la tabla anterior.
En los mensajes WM_SYSCOMMAND, los cuatro bits de menor peso del parámetro uCmdType se usan internamente por Windows. Para obtener el resultado correcto cuando se comprueba el valor de uCmdType, la aplicación debe combinar el valor 0xFFF0 con el valor de uCmdType usando el operador de bits AND.
Los elementos del menú de sistema pueden ser modificados usando las funciones GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem y SetMenuItem. Las aplicaciones que modifiquen el menú del sistema deben procesar los mensajes WM_SYSCOMMAND.
Una aplicación puede llevar a cabo cualquier comando del sistema en cualquier momento pasando un mensaje WM_SYSCOMMAND a la función DefWindowProc. Cualquier mensaje WM_SYSCOMMAND no manipulado por la aplicación debe ser pasado a la función DefWindowProc. Cualquier comando nuevo añadido por la aplicación debe ser procesado por ella y nunca debe ser pasado a la función DefWindowProc.
Las teclas de aceleración que están definidas para elegir elementos del menú del sistema son traducidas a mensajes WM_SYSCOMMAND; el resto de las teclas de aceleración se traducen a mensajes WM_COMMAND.