Función EngSetPointerShape (winddi.h)
La función EngSetPointerShape establece la forma de puntero para el controlador que llama.
Sintaxis
ENGAPI ULONG EngSetPointerShape(
[in] SURFOBJ *pso,
[in] SURFOBJ *psoMask,
[in] SURFOBJ *psoColor,
[in] XLATEOBJ *pxlo,
[in] LONG xHot,
[in] LONG yHot,
[in] LONG x,
[in] LONG y,
[in] RECTL *prcl,
[in] FLONG fl
);
Parámetros
[in] pso
Puntero a una estructura SURFOBJ que describe la superficie en la que se va a dibujar.
[in] psoMask
Puntero a una estructura SURFOBJ que define la máscara AND-XOR que se va a aplicar al mapa de bits del puntero. La mitad superior del mapa de bits especifica la máscara monocromática AND y la mitad inferior especifica la máscara XOR monocromática. El puntero tiene el mismo ancho y la mitad de la altura de la máscara a la que apunta la máscara. No hay restricciones implícitas en los tamaños de puntero, pero los tamaños de puntero óptimos son 32 x 32, 48 x 48 y 64 x 64 píxeles. Si este parámetro es NULL, el puntero es transparente.
[in] psoColor
Puntero a una estructura SURFOBJ que define los colores de un puntero de color. Este mapa de bits es el mismo ancho y la mitad del alto del mapa de bits al que apunta la máscara de bits, y tiene el mismo formato de color que la superficie a la que apunta el espacio . Si este parámetro es NULL, el puntero es monocromo.
[in] pxlo
Puntero a una estructura XLATEOBJ que define los colores en el colorcolor.
[in] xHot
Especifica la coordenada x de la zona activa del puntero en relación con su píxel superior izquierdo. El píxel indicado por la zona activa debe colocarse en la nueva posición del puntero.
[in] yHot
Especifica la coordenada y de la zona activa del puntero en relación con su píxel superior izquierdo. El píxel indicado por la zona activa debe colocarse en la nueva posición del puntero.
[in] x
Especifica las coordenadas x de la nueva posición del puntero.
[in] y
Especifica las coordenadas y de la nueva posición del puntero.
[in] prcl
Puntero a una estructura RECTL . Si no es NULL, el controlador ha proporcionado un rectángulo que enlaza todos los píxeles afectados por el puntero en la pantalla. GDI evita dibujar en este rectángulo sin mover primero el puntero fuera del camino.
[in] fl
Especifica un conjunto de marcas que GDI debe usar para procesar esta llamada. Este parámetro puede ser uno o varios de los siguientes valores predefinidos:
Marca | Significado |
---|---|
SPS_ANIMATESTART | GDI debe estar preparado para recibir una serie de formas de puntero de tamaño similar que comprenderán un efecto de puntero animado. |
SPS_ANIMATEUPDATE | GDI debe dibujar la siguiente forma de puntero en la serie animada. |
SPS_CHANGE | Se solicita GDI para cambiar la forma del puntero. |
Valor devuelto
EngSetPointerShape devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
GDI acepta la forma. GDI no lee ni escribe en el rectángulo escrito en prcl sin mover primero el puntero fuera del camino. |
|
GDI normalmente admite esta forma, pero no se pudo por motivos inusuales. |
Comentarios
El controlador puede llamar a EngSetPointerShape para que GDI administre un cursor de software.
Hay dos partes en el mapa de bits monocromo al que apunta la máscara de bits. La primera parte define la máscara AND para el puntero, mientras que la segunda parte define la máscara XOR. En conjunto, estas máscaras proporcionan dos bits de información para cada píxel de la imagen de puntero. En la tabla de verdad siguiente se determina qué GDI dibuja en la pantalla para diferentes valores en las máscaras AND y XOR:
Valor AND | Valor XOR | Píxel resultante |
---|---|---|
0 | 0 | Blanco |
0 | 1 | Negro |
1 | 0 | Ningún cambio en el píxel |
1 | 1 | El color del píxel se invierte |
Este mecanismo proporciona una imagen en blanco y negro, al tiempo que permite la transparencia y la inversión de los píxeles que componen el puntero.
Requisitos
Cliente mínimo compatible | Disponible en Windows 2000 y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Universal |
Encabezado | winddi.h (incluya Winddi.h) |
Library | Win32k.lib |
Archivo DLL | Win32k.sys |