Définition de l’image de curseur

Le curseur est la petite image qui indique l’emplacement de la souris ou d’un autre dispositif de pointage. De nombreuses applications modifient l’image du curseur pour fournir des commentaires à l’utilisateur. Bien qu’elle ne soit pas obligatoire, elle ajoute un peu de poli à votre application.

Windows fournit un ensemble d’images de curseurs standard, appelées curseurs système. Il peut s’agir de la flèche, de la main, du pointeur en I, du sablier (qui est maintenant un cercle tournant) et d’autres. Cette section décrit comment utiliser les curseurs système. Pour des tâches plus avancées, telles que la création de curseurs personnalisés, consultez curseurs.

Vous pouvez associer un curseur à une classe de fenêtre en définissant le membre hCursor de la structure WNDCLASS ou WNDCLASSEX . Dans le cas contraire, le curseur par défaut est la flèche. Lorsque la souris passe au-dessus d’une fenêtre, la fenêtre reçoit un message WM _ SETCURSOR (sauf si une autre fenêtre a capturé la souris). À ce stade, l’un des événements suivants se produit :

  • L’application définit le curseur et la procédure de fenêtre retourne la valeur true.
  • L’application ne fait rien et transmet WM _ SETCURSOR à DefWindowProc.

Pour définir le curseur, un programme effectue les opérations suivantes :

  1. Appelle LoadCursor pour charger le curseur en mémoire. Cette fonction retourne un handle au curseur.
  2. Appelle SetCursor et passe dans le handle de curseur.

Sinon, si l’application passe WM _ SETCURSOR à DefWindowProc, la fonction DefWindowProc utilise l’algorithme suivant pour définir l’image de curseur :

  1. Si la fenêtre a un parent, transférez le message WM _ SETCURSOR au parent pour le gérer.
  2. Sinon, si la fenêtre possède un curseur de classe, définissez le curseur sur la classe Cursor.
  3. S’il n’y a aucun curseur de classe, définissez le curseur sur le curseur en flèche.

La fonction LoadCursor peut charger soit un curseur personnalisé à partir d’une ressource, soit l’un des curseurs système. L’exemple suivant montre comment définir le curseur sur le curseur de la main du système.

    hCursor = LoadCursor(NULL, cursor);
    SetCursor(hCursor);

Si vous modifiez le curseur, l’image de curseur se réinitialise au prochain déplacement de la souris, sauf si vous interceptez le message WM _ SETCURSOR et redéfinissez le curseur. Le code suivant montre comment gérer WM _ SETCURSOR.

    case WM_SETCURSOR:
        if (LOWORD(lParam) == HTCLIENT)
        {
            SetCursor(hCursor);
            return TRUE;
        }
        break;

Ce code vérifie d’abord les 16 bits inférieurs de lParam. Si est LOWORD(lParam) égal à HTCLIENT, cela signifie que le curseur se trouve sur la zone cliente de la fenêtre. Dans le cas contraire, le curseur se trouve sur la zone non cliente. en règle générale, vous devez uniquement définir le curseur pour la zone cliente et laisser Windows définir le curseur pour la zone non cliente.

Suivant

Entrée utilisateur : exemple étendu