Función SetWindowLongPtrA (winuser.h)
Cambia un atributo de la ventana especificada. La función también establece un valor en el desplazamiento especificado en la memoria de ventana adicional.
Sintaxis
LONG_PTR SetWindowLongPtrA(
[in] HWND hWnd,
[in] int nIndex,
[in] LONG_PTR dwNewLong
);
Parámetros
[in] hWnd
Tipo: HWND
Identificador de la ventana y, indirectamente, de la clase a la que pertenece la ventana. Se produce un error en la función
Windows XP/2000: La función SetWindowLongPtr produce un error si la ventana especificada por el parámetro hWnd no pertenece al mismo proceso que el subproceso que realiza la llamada.
[in] nIndex
Tipo: int
Desplazamiento de base cero al valor que se va a establecer. Los valores válidos están en el intervalo cero a través del número de bytes de memoria de ventana adicional, menos el tamaño de un LONG_PTR. Para establecer cualquier otro valor, especifique uno de los valores siguientes.
Los siguientes valores también están disponibles cuando el parámetro hWnd identifica un cuadro de diálogo.
[in] dwNewLong
Tipo: LONG_PTR
Valor de reemplazo.
Valor devuelto
Tipo: LONG_PTR
Si la función se ejecuta correctamente, el valor devuelto es el valor anterior del desplazamiento especificado.
Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Si el valor anterior es cero y la función se ejecuta correctamente, el valor devuelto es cero, pero la función no borra la última información de error. Para determinar el éxito o el error, borre la última información de error llamando a SetLastError con 0 y, a continuación, llame a SetWindowLongPtr. El error de función se indicará mediante un valor devuelto de cero y un GetLastError resultado distinto de cero.
Observaciones
Algunos datos de ventana se almacenan en caché, por lo que los cambios realizados mediante SetWindowLongPtr no surtirán efecto hasta que llame a la función SetWindowPos.
Si usa setWindowLongPtr con el índice de GWLP_WNDPROC para reemplazar el procedimiento de ventana, el procedimiento de ventana debe cumplir las directrices especificadas en la descripción de la función de devolución de llamada WindowProc.
Si usa SetWindowLongPtr con el índice de DWLP_MSGRESULT para establecer el valor devuelto de un mensaje procesado por un procedimiento de cuadro de diálogo, el procedimiento del cuadro de diálogo debe devolver TRUE directamente después. De lo contrario, si llama a cualquier función que da como resultado que el procedimiento del cuadro de diálogo reciba un mensaje de ventana, el mensaje de ventana anidado podría sobrescribir el valor devuelto que estableció mediante DWLP_MSGRESULT.
Al llamar a SetWindowLongPtr con el índice de GWLP_WNDPROC, se crea una subclase de la clase window utilizada para crear la ventana. Una aplicación puede subclase una clase del sistema, pero no debe subclase una clase de ventana creada por otro proceso. La función SetWindowLongPtr crea la subclase de ventana cambiando el procedimiento de ventana asociado a una clase de ventana determinada, lo que hace que el sistema llame al nuevo procedimiento de ventana en lugar del anterior. Una aplicación debe pasar los mensajes no procesados por el nuevo procedimiento de ventana al procedimiento de ventana anterior llamando a CallWindowProc. Esto permite a la aplicación crear una cadena de procedimientos de ventana.
Reserve memoria de ventana adicional especificando un valor distinto de cero en el miembro cbWndExtra de la estructura WNDCLASSEX usada con la función RegisterClassEx.
No llame a setWindowLongPtr con el índice GWLP_HWNDPARENT para cambiar el elemento primario de una ventana secundaria. En su lugar, use la función SetParent.
Si la ventana tiene un estilo de clase de CS_CLASSDC o CS_PARENTDC, no establezca los estilos de ventana extendidos WS_EX_COMPOSITED o WS_EX_LAYERED.
Llamar a SetWindowLongPtr para establecer el estilo en una barra de progreso restablecerá su posición.
Nota
El encabezado winuser.h define SetWindowLongPtr como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 2000 Professional [solo aplicaciones de escritorio] |
servidor mínimo admitido | Windows 2000 Server [solo aplicaciones de escritorio] |
de la plataforma de destino de |
Windows |
encabezado de |
winuser.h (incluya Windows.h) |
biblioteca de |
User32.lib |
DLL de |
User32.dll |
conjunto de API de |
ext-ms-win-ntuser-windowclass-l1-1-0 (introducido en Windows 8) |
Consulte también
conceptual de
de referencia de
clases de ventana de