Condividi tramite


Disegnare una visualizzazione

Quasi tutti gli disegno l'applicazione si trova nella funzione membro di OnDraw di visualizzazione, che è necessario eseguire l'override di nella classe di visualizzazione.(L'eccezione è disegno del mouse, illustrati in Interpretazione di input con una visualizzazione). L'override di OnDraw :

  1. Ottiene i dati chiamando le funzioni membro che il documento svolgete.

  2. Visualizzare i dati dalle funzioni membro chiamanti di un oggetto di contesto di dispositivo che le sessioni del framework a OnDraw.

Quando i dati di un documento vengono modificati in qualche modo, la visualizzazione ridisegnare per riflettere le modifiche.In genere, ciò si verifica quando l'utente apporta una modifica a una visualizzazione nel documento.In questo caso, la visualizzazione chiama la funzione membro di UpdateAllViews di documento per notificare a tutte le visualizzazioni nello stesso documento a ridisegnarsi.UpdateAllViews chiama la funzione membro di OnUpdate di ogni visualizzazione.L'implementazione predefinita di OnUpdate invalida l'intera area client della visualizzazione.È possibile eseguirne l'override per invalidare solo le aree dell'area client che eseguono il mapping alle parti si modifica del documento.

La funzione membro di UpdateAllViews di classe CDocument e la funzione membro di OnUpdate di classe CView consentono di passare la descrizione di informazioni quali parti del documento sono state modificate.Questo meccanismo di suggerimento„ consente di limitare l'area che la visualizzazione necessario ridisegnare.OnUpdate accetta due argomenti “di l„.Il primo, lHint, di tipo LPARAM, consente di passare tutti i dati desiderato, mentre il secondo, pHint, di tipo CObject*, consente di passare un puntatore a un oggetto derivato da CObject.

Quando una visualizzazione diventa non valido, le finestre la invia un messaggio di WM_PAINT .La funzione di gestione di OnPaint della visualizzazione risponde al messaggio creando un oggetto di contesto di dispositivo di classe CPaintDC e chiama la funzione membro di OnDraw del punto di vista.In genere non è necessario scrivere una funzione di gestione eseguendo l'override di OnPaint .

contesto di dispositivo è una struttura di dati windows contenente informazioni sugli attributi di disegno di un dispositivo come una visualizzazione o una stampante.Tutte le chiamate di disegno vengono effettuate tramite un oggetto di contesto di dispositivo.Per disegnare lo schermo, OnDraw viene passato un oggetto di CPaintDC .Per disegnare una stampante, viene passato a un'impostazione dell'oggetto di CDC per la stampante corrente.

Il codice per leggere il primo di visualizzazione recupera un puntatore al documento, quindi effettua chiamate di disegno con il contesto di dispositivo.Il semplice esempio riportato di OnDraw illustra il processo:

void CMyView::OnDraw(CDC* pDC)
{
   CMyDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   CString s = pDoc->GetData();   // Returns a CString
   CRect rect;
   GetClientRect(&rect);

   pDC->SetTextAlign(TA_BASELINE | TA_CENTER);
   pDC->TextOut(rect.right / 2, rect.bottom / 2, s, s.GetLength());
}

In questo esempio, definire la funzione di GetData come membro della classe derivata del documento.

Stampa di esempio qualsiasi stringa ottiene dal documento, centrate nella visualizzazione.Se la chiamata di OnDraw è per il disegno dello schermo, l'oggetto di CDC passato in pDC è CPaintDC il cui costruttore ha già chiamato BeginPaint.Le chiamate a disegnare le funzioni vengono effettuate tramite il puntatore di contesto di dispositivo.Per informazioni sui contesti di periferica e le chiamate di disegno, vedere la classe CDCin riferimenti alla libreria MFC e in Utilizzo degli oggetti Window.

Per ulteriori esempi su come scrivere OnDraw, vedere esempi di MFC.

Vedere anche

Riferimenti

Utilizzo delle visualizzazioni