Partager via


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
SPS_ACCEPT_EXCLUDE
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.
SPS_ERROR
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

Voir aussi

DrvSetPointerShape

EngMovePointer

SURFOBJ

XLATEOBJ