Partager via


À propos des curseurs

Windows fournit un ensemble de curseurs standard utilisables par les applications. Les identificateurs de curseur suivants sont définis dans WinUser.h :

Valeur Signification
IDC_ARROW
MAKEINTRESOURCE(32512)
Sélection normale
IDC_IBEAM
MAKEINTRESOURCE(32513)
Sélection de texte
IDC_WAIT
MAKEINTRESOURCE(32514)
Occupé
IDC_CROSS
MAKEINTRESOURCE(32515)
Sélection de précision
IDC_UPARROW
MAKEINTRESOURCE(32516)
Autre sélection
IDC_SIZENWSE
MAKEINTRESOURCE(32642)
Redimensionnement en diagonale 1
IDC_SIZENESW
MAKEINTRESOURCE(32643)
Redimensionnement en diagonale 2
IDC_SIZEWE
MAKEINTRESOURCE(32644)
Redimensionnement horizontal
IDC_SIZENS
MAKEINTRESOURCE(32645)
Redimensionnement vertical
IDC_SIZEALL
MAKEINTRESOURCE(32646)
Déplacement
IDC_NO
MAKEINTRESOURCE(32648)
Indisponible
IDC_HAND
MAKEINTRESOURCE(32649)
Sélection de lien
IDC_APPSTARTING
MAKEINTRESOURCE(32650)
Travail en arrière-plan
IDC_HELP
MAKEINTRESOURCE(32651)
Sélection d’une aide
IDC_PIN
MAKEINTRESOURCE(32671)
Sélection d’un emplacement
IDC_PERSON
MAKEINTRESOURCE(32672)
Sélection d’une personne

Un certain nombre de curseurs supplémentaires également disponibles n’ont pas d’identificateurs définis dans WinUser.h (ou sont considérés comme obsolètes) :

Valeur Signification
MAKEINTRESOURCE(32631) Pointeur de stylet.
MAKEINTRESOURCE(32652) Curseur de défilement avec flèches pointant vers le nord et le sud.
MAKEINTRESOURCE(32653) Curseur de défilement avec flèches pointant vers l’ouest et l’est.
MAKEINTRESOURCE(32654) Curseur de défilement avec flèches pointant vers le nord, le sud, l’est et l’ouest.
MAKEINTRESOURCE(32655) Curseur de défilement avec une flèche pointant vers le nord.
MAKEINTRESOURCE(32656) Curseur de défilement avec une flèche pointant vers le sud.
MAKEINTRESOURCE(32657) Curseur de défilement avec une flèche pointant vers l'ouest.
MAKEINTRESOURCE(32658) Curseur de défilement avec une flèche pointant vers l'est.
MAKEINTRESOURCE(32659) Curseur de défilement avec flèches pointant vers le nord et l'ouest.
MAKEINTRESOURCE(32660) Curseur de défilement avec flèches pointant vers le nord et l'est.
MAKEINTRESOURCE(32661) Curseur de défilement avec flèches pointant vers le sud et l'ouest.
MAKEINTRESOURCE(32662) Curseur de défilement avec flèches pointant vers le sud et l'est.
MAKEINTRESOURCE(32663) Curseur arrowCd.

Consultez les Instructions pour plus d’informations sur l’utilisation des curseurs standard.

Chaque curseur standard a une image par défaut correspondante associée. L’utilisateur ou une application peut remplacer à tout moment l’image par défaut associée à n’importe quel curseur standard. Une application remplace une image par défaut à l’aide de la fonction SetSystemCursor.

Une application peut utiliser la fonction GetIconInfo pour récupérer l’image actuelle d’un curseur et dessiner le curseur à l’aide de la fonction DrawIconEx.

Les curseurs personnalisés sont conçus pour être utilisés dans une application spécifique et peuvent avoir n’importe quel design défini par le développeur. L’illustration suivante montre plusieurs curseurs personnalisés.

custom cursors, including hand, banana, drum, wristwatch on hand, metronome

Les curseurs peuvent être monochromes ou en couleur, et soit statiques soit animés. Le type de curseur utilisé sur un système informatique particulier dépend de l’affichage du système. Les anciens affichages tels que VGA ne prennent pas en charge les curseurs en couleur ou animés. Les nouveaux affichages, dont les pilotes d’affichage utilisent le moteur de bitmap indépendant du dispositif (DIB), les prennent en charge.

Les curseurs et les icônes sont similaires et peuvent être utilisés de manière interchangeable dans de nombreuses situations. La seule différence entre eux est qu’une image spécifiée comme un curseur doit être dans le format que l’affichage peut supporter. Par exemple, un curseur doit être monochrome pour un affichage VGA.

Cet aperçu fournit des informations sur les sujets suivants :

Le pointeur

Dans le curseur, un pixel appelé pointeur marque l’emplacement exact sur l’écran qui est affecté par un événement de souris, tel qu’un clic de bouton de souris. En règle générale, le pointeur est le point focal du curseur. Le système suit et reconnaît ce point comme la position du curseur. Par exemple, les pointeurs classiques sont le pixel situé à l’extrémité d’un curseur en forme de flèche et le pixel au milieu d’un curseur en forme de croix. Les images suivantes montrent deux curseurs d’un programme de dessin, dans lesquels les pointeurs sont associés à la pointe du pinceau et au réticule du pot de peinture.

hot spots on two cursors

Lorsqu’un événement d’entrée de souris se produit, le pilote de souris traduit l’événement en un message de souris approprié qui inclut les coordonnées du pointeur. Le système envoie le message de souris à la fenêtre qui contient le point chaud ou à la fenêtre qui capture l’entrée de la souris. Pour plus d’informations, voir Entrée de Souris.

La souris et le curseur

Le système reflète le mouvement de la souris en déplaçant le curseur sur l’écran en conséquence. Lorsque le curseur se déplace sur différentes parties de fenêtres ou dans différentes fenêtres, le système (ou une application) modifie l’apparence du curseur. Par exemple, lorsque le curseur passe sur un hyperlien, le système change le curseur d’une flèche en une main.

standard cursor changing to a hand when over a hyperlink

Si le système n’a pas de souris, le système affiche et déplace le curseur uniquement lorsque l’utilisateur choisit certaines commandes du système, telles que celles utilisées pour redimensionner ou déplacer une fenêtre. Pour fournir à l’utilisateur une méthode d’affichage et de déplacement du curseur lorsqu’une souris n’est pas disponible, une application peut utiliser les fonctions de curseur pour simuler un mouvement de souris. Avec cette capacité de simulation, l’utilisateur peut utiliser les touches fléchées pour déplacer le curseur.

Création de curseurs

Comme les curseurs standards sont prédéfinis, il n’est pas nécessaire de les créer. Pour utiliser un curseur standard, une application récupère un identificateur de curseur en utilisant la fonction LoadCursor ou LoadImage. Un identificateur de curseur est une valeur unique du type HCURSOR qui identifie un curseur standard ou personnalisé.

Pour créer un curseur personnalisé pour une application, vous utilisez généralement une application graphique et incluez le curseur en tant que ressource dans le fichier de définition de ressources de l’application. Au moment de l’exécution, appelez LoadCursor pour récupérer l’identificateur de curseur. Les ressources de curseur contiennent des données pour plusieurs périphériques d’affichage différents. La fonction LoadCursor sélectionne automatiquement les données les plus appropriées pour le périphérique d’affichage actuel. Pour charger un curseur directement à partir d’un fichier .CUR ou .ANI, utilisez la fonction LoadCursorFromFile.

Vous pouvez également créer un curseur personnalisé au moment de l’exécution en utilisant la fonction CreateIconIndirect, qui crée un curseur en fonction du contenu d’une structure ICONINFO. La fonction GetIconInfo remplit cette structure avec les coordonnées du pointeur chaud et des informations concernant le masque associé et la couleur.

Les applications doivent implémenter les curseurs personnalisés en tant que ressources et utiliser LoadCursor, LoadCursorFromFile ou LoadImage plutôt que de créer le curseur au moment de l’exécution. L’utilisation de ressources de curseur évite la dépendance à l’égard du périphérique, simplifie la localisation et permet aux applications de partager des conceptions de curseur.

La fonction CreateIconFromResourceEx permet à une application de créer des icônes et des curseurs basés sur des données de ressource. CreateIconFromResourceEx crée un curseur basé sur des données de ressource binaires provenant d’autres fichiers exécutables (.exe) ou DLL. Il doit être précédé d’appels à la fonction LookupIconIdFromDirectoryEx, ainsi qu’à plusieurs fonctions de ressource. LookupIconIdFromDirectoryEx identifie les données de curseur les plus appropriées pour le périphérique d’affichage actuel. Pour plus d’informations sur les fonctions de ressource, voir Ressources.

Emplacement et apparence du curseur

Le système affiche automatiquement un curseur pour la souris et met à jour sa position à l’écran. Vous pouvez obtenir les coordonnées actuelles à l’écran du curseur et déplacer le curseur vers n’importe quel emplacement à l’écran en utilisant respectivement les fonctions GetCursorPos et SetCursorPos.

Vous pouvez également récupérer l’identificateur du curseur actuel en utilisant la fonction GetCursor, et vous pouvez définir le curseur en utilisant la fonction SetCursor. Après avoir appelé SetCursor, l’apparence du curseur ne change pas tant que la souris ne se déplace pas, que le curseur n’est pas explicitement défini sur un autre curseur, ou qu’une commande système n’est pas exécutée.

Lorsque l’utilisateur déplace la souris, le système redessine le curseur à la nouvelle position. Le système redessine automatiquement la conception du curseur associée à la fenêtre vers laquelle pointe le curseur.

Vous pouvez masquer et ré-afficher le curseur, sans changer la conception du curseur, en utilisant la fonction ShowCursor. Cette fonction utilise un compteur interne pour déterminer quand masquer ou afficher le curseur. Une tentative d’affichage du curseur incrémente le compteur ; une tentative de masquage du curseur décrémente le compteur. Le curseur est visible uniquement si ce compteur est supérieur ou égal à zéro.

La fonction GetCursorInfo obtient les informations suivantes pour le curseur global : si le curseur est masqué ou affiché, l’identificateur du curseur, et les coordonnées du curseur.

Confinement du curseur

Vous pouvez confiner le curseur à une zone rectangulaire à l’écran en utilisant la fonction ClipCursor. Ceci est utile lorsque l’utilisateur doit répondre à un certain événement à l’intérieur de la zone confinée du rectangle. Par exemple, vous pouvez utiliser ClipCursor pour confiner le curseur à une boîte de dialogue modale, empêchant l’utilisateur d’interagir avec d’autres fenêtres jusqu’à ce que la boîte de dialogue soit fermée.

La fonction GetClipCursor récupère les coordonnées à l’écran de la zone rectangulaire à laquelle le curseur est temporairement confiné. Lorsqu’il est nécessaire de confiner le curseur, vous pouvez également utiliser cette fonction pour enregistrer les coordonnées de la zone d’origine dans laquelle le curseur peut se déplacer. Ensuite, vous pouvez restaurer le curseur à la zone d’origine lorsque le nouveau confinement n’est plus nécessaire.

Destruction du curseur

Vous pouvez détruire l’identificateur de curseur et libérer la mémoire utilisée par le curseur en appelant la fonction DestroyCursor. Cependant, cette fonction n’a aucun effet sur un curseur partagé. Un curseur partagé est valide tant que le module à partir duquel il a été chargé reste en mémoire. Les fonctions suivantes obtiennent un curseur partagé :

Lorsque vous n’avez plus besoin d’un curseur que vous avez créé en utilisant la fonction CreateIconIndirect, vous devez détruire le curseur. La fonction DestroyIcon détruit l’identificateur de curseur et libère toute mémoire utilisée par le curseur. Utilisez cette fonction uniquement sur les curseurs qui ont été créés avec CreateIconIndirect.

Duplication de curseurs

La fonction CopyCursor copie un identificateur de curseur. Cela permet au code d’application ou de DLL de récupérer l’identificateur d’un curseur appartenant à un autre module. Ensuite, si l’autre module est libéré, le module qui a copié le curseur peut toujours utiliser la conception du curseur.

Pour des informations sur la façon d’ajouter, de supprimer ou de remplacer des ressources de curseur dans des fichiers exécutables, voir Ressources.

Curseur de la classe Window

Lorsque vous enregistrez une classe de fenêtre en utilisant la fonction RegisterClass, vous pouvez lui attribuer un curseur par défaut, appelé le curseur de classe. Après que l’application a enregistré la classe de fenêtre, chaque fenêtre de cette classe a le curseur de classe spécifié.

Pour remplacer le curseur de classe, traitez le message WM_SETCURSOR. Vous pouvez également remplacer un curseur de classe en utilisant la fonction SetClassLong. Cette fonction modifie les paramètres de fenêtre par défaut pour toutes les fenêtres d’une classe spécifiée. Pour plus d’informations, voir curseur de classe.