winuser.h


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.