Condividi tramite


Quando disegnare in una finestra

Un'applicazione disegna 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 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 anziché 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 di WM_PAINT messaggi. In questo caso, l'applicazione recupera un contesto di dispositivo visualizzato chiamando la funzione BeginPaint . Se un'applicazione disegna in qualsiasi altro momento, ad esempio dall'interno di WinMain o durante l'elaborazione di messaggi tramite tastiera o mouse, chiama la funzione GetDC o GetDCEx per recuperare il controller di dominio di visualizzazione.