SetClassLong
La función SetClassLong reemplaza el valor (long) especificado de 32 bits en el desplazamiento especificado dentro de la memoria extra de la clase o la estructura WNDCLASS para la clase a la que pertenece la ventana especificada.
Sintaxis
DWORD SetClassLong( HWND hWnd, // manipulador de ventana int nIndex, // índice del valor a cambiar LONG dwNewLong // nuevo valor );
Parámetros
hWnd: identifica la ventana y, indirectamente, la clase a la que pertenece.
nIndex: especifica el valor de 32 bits a reemplazar. Para asignar un valor de 32 bits en la memoria extra de la clase, especificar el desplazamiento positivo del byte, basado en cero, del valor a asignar. Los valores válidos están en el rango desde cero hasta el número de bytes extra de memoria de clase, menos cuatro; por ejemplo, si se especifican 12 o más bytes de memoria extra de clase, un valor de 8 podría ser un índice para el tercer entero de 32 bits. Para asignar cualquier otro valor de la estructura WNDCLASS, especificar uno de los siguientes valores:
Valor | >Acción |
---|---|
GCL_CBCLSEXTRA | Asigna el tamaño, en bytes, de la memoria extra asociada con la clase. Asignar este valor no cambia el número de bytes extra ya localizados. |
GCL_CBWNDEXTRA | Asigna el tamaño, en bytes, de la memoria extra de ventana asociada con cada ventana de la clase. Modificar este valor no cambia el número de bytes extras ya localizados. Para obtener información sobre cómo acceder a esta memoria, ver las funciones SetWindowLong. |
GCL_HBRBACKGROUND | Reemplaza el manipulador de la pluma para el fondo asociada con la clase. |
GCL_HCURSOR | Reemplaza el manipulador del cursor asociada con la clase. |
GCL_HICON | Reemplaza el manipulador de icono asociado con la clase. |
GCL_HMODULE | Reemplaza el manipulador del módulo que ha registrado la clase. |
GCL_MENUNAME | Reemplaza la dirección de la cadena con el nombre del menú. La cadena identifica el recurso de menú asociado con la clase. |
GCL_STYLE | Reemplaza los bits de estilo de la clase de ventana. |
GCL_WNDPROC | Reemplaza la dirección del procedimiento de ventana asociado a la clase. |
dwNewLong: especifica el nuevo valor.
Valor de retorno
Si la función tiene éxito, el valor de retorno es el valor previo del entero de 32 bits especificado.
Si la función falla, el valor de retorno es cero. Para obtener información adicionar sobre el error, llamar a GetLastError.
Observaciones
Si se usa la función SetClassLong y el índice GCL_WNDPROC para reemplazar el procedimiento de ventana, el procedimiento de ventana debe cumplir las especificaciones especificadas en la descripción de la función callback WindowProc.
Llamando a SetClassLong con el índice GCL_WNDPROC crea una subclase de la clase de ventana que afecta a todas las ventanas creadas a partir de ese momento con dicha clase. Una aplicación no debe crear una subclase de una ventana creada por otro proceso.
Para reservar memoria extra de clase se debe especificar un valor no nulo en el miembro cbClsExtra de la estructura WNDCLASS usada con la función RegisterClass.
Hay que usar la función SetClassLong con cuidado. Por ejemplo, es posible cambiar el color de fondo para una clase usando SetClassLong, pero ese cambio no repinta todas las ventanas de esa clase inmediatamente.