Quando disegnare in una finestra
Un'applicazione disegna in una finestra in diversi momenti: quando si crea una finestra, quando si modificano le dimensioni della finestra, quando si sposta la finestra da dietro un'altra finestra, quando si riduce al minimo o si ottimizza la finestra, quando si visualizzano dati da un file aperto e quando si scorre, si modifica o si seleziona una parte dei dati visualizzati.
Il sistema gestisce azioni come lo spostamento e il ridimensionamento di una finestra. Se un'azione influisce sul contenuto della finestra, il sistema contrassegna la parte interessata della finestra come pronta per l'aggiornamento e, alla successiva opportunità, invia un messaggio WM_PAINT alla routine della finestra. Il messaggio è un segnale all'applicazione per determinare cosa deve essere aggiornato e per eseguire il disegno necessario.
Alcune azioni vengono gestite dall'applicazione, ad esempio la visualizzazione di file aperti e la selezione dei dati visualizzati. Per queste azioni, un'applicazione può contrassegnare per l'aggiornamento della parte della finestra interessata dall'azione, causando l'invio di un messaggio WM_PAINT alla successiva opportunità. Se un'azione richiede un feedback immediato, l'applicazione può disegnare mentre viene eseguita l'azione, senza attendere WM_PAINT. Ad esempio, un'applicazione tipica evidenzia l'area selezionata dall'utente invece di attendere il successivo WM_PAINT messaggio per aggiornare l'area.
In tutti i casi, un'applicazione può disegnare in una finestra non appena viene creata. Per disegnare nella finestra, l'applicazione deve prima recuperare un handle in un contesto di dispositivo di visualizzazione per la finestra. Idealmente, un'applicazione esegue la maggior parte delle operazioni di disegno durante l'elaborazione dei messaggi di WM_PAINT. In questo caso, l'applicazione recupera un contesto del dispositivo di visualizzazione chiamando la funzione BeginPaint. Se un'applicazione disegna in qualsiasi altro momento, ad esempio dall'interno di WinMain o durante l'elaborazione dei messaggi della tastiera o del mouse, chiama la funzione GetDC o la funzione GetDCEx per recuperare il contesto del dispositivo di visualizzazione.