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 |
---|---|
|
GDI accetta la forma. GDI non legge o scrive nel rettangolo scritto in prcl senza prima spostare il puntatore fuori strada. |
|
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 |