Fonction EngSetPointerShape (winddi.h)
La fonction EngSetPointerShape définit la forme du pointeur pour le pilote appelant.
Syntaxe
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
);
Paramètres
[in] pso
Pointeur vers une structure SURFOBJ qui décrit la surface sur laquelle dessiner.
[in] psoMask
Pointeur vers une structure SURFOBJ qui définit le masque AND-XOR à appliquer à l’image bitmap du pointeur. La moitié supérieure de la bitmap spécifie le masque MONOCHROME AND et la moitié inférieure spécifie le masque XOR monochrome. Le pointeur a la même largeur et la moitié de la hauteur du masque vers laquelle pointe psoMask . Il n’existe aucune contrainte implicite sur les tailles de pointeur, mais les tailles de pointeur optimales sont 32 x 32, 48 x 48 et 64 x 64 pixels. Si ce paramètre a la valeur NULL, le pointeur est transparent.
[in] psoColor
Pointeur vers une structure SURFOBJ qui définit les couleurs d’un pointeur de couleur. Cette bitmap a la même largeur et la moitié de la hauteur de la bitmap vers laquelle pointe psoMask , et est dans le même format de couleur que la surface vers laquelle pointe pso . Si ce paramètre a la valeur NULL, le pointeur est monochrome.
[in] pxlo
Pointeur vers une structure XLATEOBJ qui définit les couleurs dans psoColor.
[in] xHot
Spécifie la coordonnée x du point chaud du pointeur par rapport à son pixel supérieur gauche. Le pixel indiqué par le point chaud doit être positionné à la nouvelle position du pointeur.
[in] yHot
Spécifie la coordonnée y du point chaud du pointeur par rapport à son pixel supérieur gauche. Le pixel indiqué par le point chaud doit être positionné à la nouvelle position du pointeur.
[in] x
Spécifie les coordonnées x de la nouvelle position du pointeur.
[in] y
Spécifie les coordonnées y de la nouvelle position du pointeur.
[in] prcl
Pointeur vers une structure RECTL . Si la valeur n’est pas NULL, le pilote a fourni un rectangle qui limite tous les pixels affectés par le pointeur sur l’affichage. GDI évite de dessiner sur ce rectangle sans d’abord déplacer le pointeur hors du chemin.
[in] fl
Spécifie un ensemble d’indicateurs que GDI doit utiliser pour traiter cet appel. Ce paramètre peut être une ou plusieurs des valeurs prédéfinies suivantes :
Indicateur | Signification |
---|---|
SPS_ANIMATESTART | GDI doit être prêt à recevoir une série de formes de pointeur de taille similaire qui comprendront un effet de pointeur animé. |
SPS_ANIMATEUPDATE | GDI doit dessiner la forme de pointeur suivante dans la série animée. |
SPS_CHANGE | GDI est demandé pour modifier la forme du pointeur. |
Valeur retournée
EngSetPointerShape retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
GDI accepte la forme. GDI ne lit pas ou n’écrit pas dans le rectangle écrit au niveau du prcl sans d’abord déplacer le pointeur hors du chemin. |
|
GDI prend normalement en charge cette forme, mais a échoué pour des raisons inhabituelles. |
Remarques
Le pilote peut appeler EngSetPointerShape pour que GDI gère un curseur logiciel.
Il y a deux parties à la bitmap monochrome vers laquelle psoMask pointe. La première partie définit le masque AND pour le pointeur tandis que la deuxième partie définit le masque XOR. Pris ensemble, ces masques fournissent deux bits d’informations pour chaque pixel de l’image de pointeur. Le tableau de vérité suivant détermine ce que GDI dessine sur l’affichage pour différentes valeurs dans les masques AND et XOR :
Valeur AND | Valeur XOR | Pixel résultant |
---|---|---|
0 | 0 | Blancs |
0 | 1 | Noir |
1 | 0 | Aucune modification du pixel |
1 | 1 | La couleur du pixel est inversée |
Ce mécanisme fournit une image en noir et blanc tout en permettant la transparence et l’inversion des pixels qui composent le pointeur.
Configuration requise
Client minimal pris en charge | Disponible dans Windows 2000 et versions ultérieures des systèmes d’exploitation Windows. |
Plateforme cible | Universal |
En-tête | winddi.h (inclure Winddi.h) |
Bibliothèque | Win32k.lib |
DLL | Win32k.sys |