Estructura WNDCLASS
Definición
typedef struct _WNDCLASS { // wc UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; } WNDCLASS;
Descripción
style: Es un entero de 16 bits que codifica el estilo de la clase de ventana. Estos bits se pueden combinar con la función OR (|), para obtener estilos con las características deseadas.
Estos valores pueden ser:
Valor | Significado |
CS_BYTEALIGNCLIENT |
Hace que el área de cliente coincida con el límite de un byte en la dirección de las x. Esto mejora las prestaciones a la hora de pintar en la pantalla. Este estilo afecta tanto al ancho de la ventana como a su posición en la pantalla. |
CS_BYTEALIGNWINDOW | Lo mismo que el anterior, pero con el borde de la ventana, en lugar del área de cliente. |
CS_CLASSDC | Crea un DC (Contexto de Dispositivo) que será compartido por todas las ventanas de la misma clase. Cuando varias ventanas intenten acceder simultáneamente al DC, el sistema operativo permite sólo a una el acceso hasta que termina. |
CS_DBLCLKS |
Envía los mensaje de doble-clic al procedimiento de la ventana, cuando el usuario hace doble-clic sobre una ventana de esta clase. |
CS_GLOBALCLASS | Permite a una aplicación crear una ventana de esta clase independientemente del valor de hInstance que se proporcione a CreateWindow. Si no se especifica, el valor de hInstace debe ser el mismo que se uso para registrar la clase. |
CS_HREDRAW | Redibuja toda la ventana cada vez que un movimiento o cambio de tamaño cambia la anchura del área de cliente. |
CS_NOCLOSE | Deshabilita del comando de cerrar del menú del sistema. |
CS_OWNDC | Crea un DC único para cada ventana de esta clase. |
CS_PARENTDC | Hace que cada ventana hija herede el DC de su padre. |
CS_SAVEBITS | Guarda como mapas de bits los trozos de pantalla tapados por la ventana. Windows usará estos mapas de bits para reconstruir la pantalla cuando la ventana se cierre. Windows muestra los mapas en su lugar original y no envía el mensaje de actualizar la ventana a las ventanas afectadas. Este estilo se usa normalmente con ventanas pequeñas como menús o diálogos que se muestran y son cerrados antes de que haya alguna actividad en la pantalla. Este estilo aumenta el tiempo necesario para mostrar la ventana, ya que Windows debe reservar memoria para guardar el mapa de bits. |
CS_VREDRAW | Redibuja toda la ventana cada vez que un movimiento o cambio de tamaño cambia la altura del área de cliente. |
lpfnWndProc: Apunta al procedimiento de ventana. Ver información sobre WindowProc.
cbClsExtra: Especifica cuantos bytes extra se reservarán a continuación de la estructura de la clase. El sistema operativo inicializará estos bytes a cero.
cbWndExtra: Especifica cuantos bytes extra se reservarán a continuación de la instancia de la ventana. El sistema operativo inicializará estos bytes a cero.
hInstance: Identifica la instancia de la ventana a la que esta clase pertenece.
hIcon: Identificador del icono de la clase. Debe ser un manipulador de un recurso de tipo icono. Si es NULL, la aplicación debe mostrar un icono cuando el usuario minimice la ventana de la aplicación.
hCursor: Identificador del cursor de la clase. Debe ser un manipulador de recurso de tipo cursor. Si es NULL, la aplicación debe mostrar el cursor explícitamente cada vez que el usuario mueve el ratón sobre la ventana de la aplicación.
hbrBackground: Identificador del pincel para la clase. Puede ser un manipulador para un pincel físico que se usará para pintar el fondo de la ventana, o puede ser un valor de color.
El sistema operativo elimina el pincel de fondo de la clase cuando ésta se libera. Una aplicación nunca debe borrar estos pinceles, ya que la misma clase de ventana puede ser usada por varias instancias de la misma aplicación. Si este miembro es NULL, la aplicación es la encargada de pintar el fondo del área de cliente cada vez que el sistema los requiera. Para determinar si el fondo debe ser actualizado, la aplicación puede procesar el mensaje WM_ERASEBKGND o comprobar el miembro fErase de la estructura PAINTSTRUCT que se actualiza con la función BeginPaint.
lpszMenuName: Puntero a una cadena terminada con cero que especifica un nombre de recurso de la clase menú, es el nombre con el que aparece en el fichero de recursos. Si se usa un entero para identificar el menú, hay que usar la macro MAKEINTRESOURCE. Si este miembro es NULL, las ventanas de esta clase no tendrán un menú por defecto.
lpszClassName: Apunta a una cadena o es un átomo. Si es un átomo, este debe estar previamente creado como global con una llamada a la función GlobalAddAtom. El átomo, un valor de 16 bits, debe ser la palabra de menor peso del parámetro lpszClassName; la palabra de mayor peso debe ser cero. Si lpszClassName es una cadena, especificará el nombre de la clase de ventana.