Delen via


De cursorafbeelding instellen

De cursor is de kleine afbeelding waarin de locatie van de muis of een ander aanwijsapparaat wordt weergegeven. Veel toepassingen wijzigen de cursorafbeelding om feedback te geven aan de gebruiker. Hoewel het niet vereist is, voegt het een mooi stukje polijsten toe aan uw toepassing.

Windows biedt een set standaardcursorafbeeldingen, systeemcursorsgenoemd. Deze omvatten de pijl, de hand, de I-beam, de zandloper (dat nu een draaiende cirkel is) en andere. In deze sectie wordt beschreven hoe u de systeemcursors gebruikt. Zie Cursorsvoor meer geavanceerde taken, zoals het maken van aangepaste cursors.

U kunt een cursor koppelen aan een vensterklasse door de hCursor- lid van de WNDCLASS- of WNDCLASSEX- structuur in te stellen. Anders is de standaardcursor de pijl. Wanneer de muis over een venster beweegt, ontvangt het venster een WM_SETCURSOR bericht (tenzij een ander venster de muis heeft vastgelegd). Op dit moment vindt een van de volgende gebeurtenissen plaats:

  • De toepassing stelt de cursor in en de vensterprocedure retourneert TRUE.
  • De toepassing doet niets en geeft WM_SETCURSOR door aan DefWindowProc-.

Als u de cursor wilt instellen, doet een programma het volgende:

  1. Roept LoadCursor- aan om de cursor in het geheugen te laden. Deze functie retourneert een handle voor de cursor.
  2. Roept SetCursor aan en geeft de cursorhandle door.

Anders, als de toepassing WM_SETCURSOR doorgeeft aan DefWindowProc, gebruikt de functie DefWindowProc het volgende algoritme om de cursorafbeelding in te stellen.

  1. Als het venster een bovenliggende venster heeft, stuurt u het WM_SETCURSOR bericht door naar het bovenliggende venster om het te verwerken.
  2. Als het venster anders een klassecursor bevat, stelt u de cursor in op de klassecursor.
  3. Als er geen klassecursor is, stelt u de cursor in op de pijlcursor.

De functie LoadCursor kan een aangepaste cursor uit een resource of een van de systeemcursors laden. In het volgende voorbeeld ziet u hoe u de cursor instelt op de vooraf gedefinieerde systeem "link select" cursor.

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

Als u de cursor wijzigt, wordt het cursorbeeld opnieuw ingesteld bij de volgende beweging van de muis, tenzij u het WM_SETCURSOR signaal onderschept en de cursor opnieuw instelt. De volgende code laat zien hoe u WM_SETCURSORkunt verwerken.

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

Met deze code wordt eerst de lagere 16 bits van lParamgecontroleerd. Als LOWORD(lParam) gelijk is aan HTCLIENT-, betekent dit dat de cursor zich boven het clientgebied van het venster bevindt. Anders bevindt de cursor zich boven het niet-client gebied. Normaal gesproken moet u alleen de cursor voor het clientgebied instellen en Windows de cursor laten instellen voor het niet-clientgebied.

Volgende

gebruikersinvoer: Uitgebreid voorbeeld