Compartir a través de


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
SPS_ACCEPT_EXCLUDE
GDI acepta la forma. GDI no lee ni escribe en el rectángulo escrito en prcl sin mover primero el puntero fuera del camino.
SPS_ERROR
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

Consulte también

DrvSetPointerShape

EngMovePointer

SURFOBJ

XLATEOBJ