Condividi tramite


Funzione EngSetPointerShape (winddi.h)

La funzione EngSetPointerShape imposta la forma del puntatore per il driver chiamante.

Sintassi

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
);

Parametri

[in] pso

Puntatore a una struttura SURFOBJ che descrive la superficie su cui disegnare.

[in] psoMask

Puntatore a una struttura SURFOBJ che definisce la maschera AND-XOR da applicare alla bitmap del puntatore. La metà superiore della bitmap specifica la maschera AND monocromatica e la metà inferiore specifica la maschera XOR monocromatica. Il puntatore è la stessa larghezza e metà dell'altezza della maschera a cui punta psoMask . Non esistono vincoli impliciti per le dimensioni del puntatore, ma le dimensioni ottimali del puntatore sono 32 x 32, 48 x 48 e 64 x 64 pixel. Se questo parametro è NULL, il puntatore è trasparente.

[in] psoColor

Puntatore a una struttura SURFOBJ che definisce i colori per un puntatore a colori. Questa bitmap ha la stessa larghezza e metà dell'altezza della bitmap a cui punta psoMask ed è nello stesso formato di colore della superficie in cui punta pso . Se questo parametro è NULL, il puntatore è monocromatico.

[in] pxlo

Puntatore a una struttura XLATEOBJ che definisce i colori in psoColor.

[in] xHot

Specifica la coordinata x del punto attivo del puntatore rispetto al pixel superiore sinistro. Il pixel indicato dal punto attivo deve essere posizionato nella nuova posizione del puntatore.

[in] yHot

Specifica la coordinata y dello spot attivo del puntatore rispetto al pixel superiore sinistro. Il pixel indicato dal punto attivo deve essere posizionato nella nuova posizione del puntatore.

[in] x

Specifica le coordinate x della nuova posizione del puntatore.

[in] y

Specifica le coordinate y della nuova posizione del puntatore.

[in] prcl

Puntatore a una struttura RECTL . Se non null, il driver ha fornito un rettangolo che delimita tutti i pixel interessati dal puntatore sullo schermo. GDI evita di disegnare su questo rettangolo senza prima spostare il puntatore fuori strada.

[in] fl

Specifica un set di flag che devono essere usati da GDI per elaborare questa chiamata. Questo parametro può essere uno o più dei valori predefiniti seguenti:

Flag Significato
SPS_ANIMATESTART L'GDI deve essere preparata per ricevere una serie di forme puntatore di dimensioni simili che comprenderanno un effetto puntatore animato.
SPS_ANIMATEUPDATE GDI deve disegnare la forma del puntatore successiva nella serie animata.
SPS_CHANGE L'GDI viene richiesto di modificare la forma del puntatore.

Valore restituito

EngSetPointerShape restituisce uno dei valori seguenti:

Codice restituito Descrizione
SPS_ACCEPT_EXCLUDE
GDI accetta la forma. GDI non legge o scrive nel rettangolo scritto in prcl senza prima spostare il puntatore fuori strada.
SPS_ERROR
GDI supporta normalmente questa forma, ma non è riuscita per motivi insoliti.

Commenti

Il driver può chiamare EngSetPointerShape per fare in modo che GDI gestisca un cursore software.

Esistono due parti della bitmap monocromatica a cui punta psoMask . La prima parte definisce la maschera AND per il puntatore mentre la seconda parte definisce la maschera XOR. Insieme, queste maschere forniscono due bit di informazioni per ogni pixel dell'immagine del puntatore. La tabella di verità seguente determina il disegno GDI sulla visualizzazione per valori diversi nelle maschere AND e XOR:

Valore AND Valore XOR Pixel risultante
0 0 White
0 1 Nero
1 0 Nessuna modifica in pixel
1 1 Colore pixel invertito
 

Questo meccanismo fornisce un'immagine nera e bianca, consentendo al tempo stesso la trasparenza e l'inversione dei pixel che costituiscono il puntatore.

Requisiti

   
Client minimo supportato Disponibile in Windows 2000 e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Universale
Intestazione winddi.h (include Winddi.h)
Libreria Win32k.lib
DLL Win32k.sys

Vedi anche

DrvSetPointerShape

EngMovePointer

SURFOBJ

XLATEOBJ