Rysowanie w widoku

Prawie wszystkie rysunek w aplikacji występuje w widoku OnDraw funkcji członka, który należy zastąpić w klasie widoku. (Wyjątek stanowią myszy rysunek, omówione w Interpretowania użytkownika dane wejściowe za pomocą widoku.) Twój OnDraw zastąpić:

  1. Pobiera dane przez wywołanie dokumentu funkcji elementów członkowskich, które oferujesz.

  2. Wyświetla dane przez wywołanie funkcji elementów członkowskich obiekt kontekstu urządzenia, który w ramach przekazuje do OnDraw.

Po zmianie danych dokumentu w jakiś sposób, widok musi być odnawiany z uwzględnieniem zmian.Zazwyczaj dzieje się tak po dokonaniu zmiany za pomocą widoku dokumentu.W tym przypadku widok wywołuje dokumentu UpdateAllViews funkcji składowej do powiadomienia wszystkich widoków na tym samym dokumencie, aby aktualizować się.UpdateAllViewsKażdy widok wywołuje OnUpdate funkcji składowej.Domyślna implementacja z OnUpdate powoduje unieważnienie widok całego obszaru klienta.Można zastąpić to unieważnienie tylko tych regionów obszaru klienta, które są mapowane do zmodyfikowanego części dokumentu.

UpdateAllViews Funkcji składowej klasy CDocument i OnUpdate funkcji składowej klasy CView pozwalają przekazywać informacje opisujące, co części dokumentu zostały zmodyfikowane.Ten mechanizm "wskazówki" pozwala ograniczyć obszar, który należy odświeżyć widok.OnUpdatema dwa argumenty "wskazówki".Pierwszy, lHint, typu FIKCYJNYMI, pozwala przekazywać żadnych danych się, natomiast druga, pHint, typu CObject*, umożliwia przekazanie wskaźnika do dowolnego obiektu usługi pochodzące z CObject.

Gdy widok staje się nieprawidłowy, system Windows wysyła on WM_PAINT wiadomości.W widoku OnPaint funkcji obsługi odpowiada na komunikat, tworząc obiekt kontekstu urządzenia klasy CPaintDC i wzywa Państwa zdaniem OnDraw funkcji składowej.Nie masz normalnie pisać nadrzędnym OnPaint funkcji obsługi.

A kontekstu urządzenia jest strukturą danych systemu Windows, który zawiera informacje dotyczące atrybutów rysunku urządzenia takiego jak monitora lub drukarki.Wszystkie wywołania rysunku są wykonywane za pośrednictwem obiektu kontekstu urządzenia.Do rysowania na ekranie, OnDraw jest przekazywana CPaintDC obiektu.Do rysowania na drukarce, jest przekazywana CDC obiektu dla bieżącej drukarki.

Do rysowania w widoku Kod najpierw pobiera wskaźnik do dokumentu, a następnie sprawia, że rysunek połączenia za pomocą kontekstu urządzenia.Następujące proste OnDraw przykład ilustruje proces:

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());
}

W tym przykładzie, można zdefiniować GetData działać jako członek klasy pochodne dokumentu.

W przykładzie drukuje niezależnie od ciągu pobiera go z dokumentu, w widoku.Jeśli OnDraw wywołanie jest do rysowania ekranu, CDC obiekt przekazywany w pDC jest CPaintDC którego konstruktor została już wywołana BeginPaint.Wywołania funkcji rysowania odbywa się za pośrednictwem wskaźnika kontekstu urządzenia.Informacje o kontekstów urządzeń i połączeniach rysunek zawiera klasa CDC w Odwołanie MFC i pracy z obiektami okna.

Aby uzyskać więcej przykładów jak napisać OnDraw, zobacz Próbek MFC.

Zobacz też

Informacje

Używanie widoków