Impostazione dell'immagine del cursore

Il cursore è la piccola immagine che mostra la posizione del mouse o di un altro dispositivo di puntamento. Molte applicazioni modificano l'immagine del cursore per inviare commenti e suggerimenti all'utente. Anche se non è necessario, aggiunge un po 'di polacco all'applicazione.

Windows fornisce un set di immagini di cursore standard, denominate cursori di sistema. Questi includono la freccia, la mano, il fascio I, la clessidra (che ora è un cerchio rotante) e altri. In questa sezione viene descritto come usare i cursori di sistema. Per attività più avanzate, ad esempio la creazione di cursori personalizzati, vedere Cursori.

È possibile associare un cursore a una classe window impostando il membro hCursor della struttura WNDCLASS o WNDCLASSEX . In caso contrario, il cursore predefinito è la freccia. Quando il mouse si sposta su una finestra, la finestra riceve un messaggio WM_SETCURSOR (a meno che un'altra finestra non abbia acquisito il mouse). A questo punto, si verifica uno degli eventi seguenti:

  • L'applicazione imposta il cursore e la routine della finestra restituisce TRUE.
  • L'applicazione non esegue alcuna operazione e passa WM_SETCURSOR a DefWindowProc.

Per impostare il cursore, un programma esegue le operazioni seguenti:

  1. Chiama LoadCursor per caricare il cursore in memoria. Questa funzione restituisce un handle al cursore.
  2. Chiama SetCursor e passa l'handle del cursore.

In caso contrario, se l'applicazione passa WM_SETCURSOR a DefWindowProc, la funzione DefWindowProc usa l'algoritmo seguente per impostare l'immagine del cursore:

  1. Se la finestra ha un elemento padre, inoltrare il messaggio WM_SETCURSOR all'elemento padre da gestire.
  2. In caso contrario, se la finestra ha un cursore di classe, impostare il cursore sul cursore della classe.
  3. Se non è presente alcun cursore di classe, impostare il cursore sul cursore freccia.

La funzione LoadCursor può caricare un cursore personalizzato da una risorsa o uno dei cursori di sistema. Nell'esempio seguente viene illustrato come impostare il cursore sul cursore di selezione del collegamento di sistema predefinito.

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

Se si modifica il cursore, l'immagine del cursore viene reimpostata sullo spostamento successivo del mouse, a meno che non si intercetta il messaggio WM_SETCURSOR e si imposti nuovamente il cursore. Il codice seguente illustra come gestire WM_SETCURSOR.

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

Questo codice controlla prima di tutto i 16 bit inferiori di lParam. Se LOWORD(lParam) è uguale a HTCLIENT, significa che il cursore si trova sull'area client della finestra. In caso contrario, il cursore si trova sull'area non client. In genere, è consigliabile impostare solo il cursore per l'area client e consentire a Windows di impostare il cursore per l'area non client.

Prossima

Input utente: esempio esteso