Udostępnij za pośrednictwem


Rysowanie w widoku

Niemal cały rysunek w aplikacji występuje w widoku OnDraw Członkowskich funkcji, należy zastąpić w klasie widoku.(Wyjątkiem jest myszy rysunek, omówione w Interpretowania użytkownika wprowadzania za pomocą widoku.) Twój OnDraw zastąpić:

  1. Pobiera dane przez wywołanie funkcji elementów członkowskich, które należy dostarczyć w dokumencie.

  2. Wyświetla dane przez wywołanie funkcji elementów członkowskich w ramach przekazywany do obiektu kontekstu urządzenia OnDraw.

Po zmianie danych w dokumencie w jakiś sposób, musi odświeżana widoku, aby odzwierciedlić zmiany.Zazwyczaj dzieje się po dokonaniu zmiany za pomocą widoku dokumentu.W tym przypadku wywołuje dokumentu w widoku UpdateAllViews funkcji składowej powiadomić wszystkich widoków na tym samym dokumencie, aby zaktualizować same.UpdateAllViewsKażdy widok wywołuje OnUpdate funkcji składowej.Domyślne wykonania OnUpdate unieważnia widok całego obszaru klienta.Można je zastąpić unieważnianie tylko tych regionów obszaru klienta, które mapują zmodyfikowane części dokumentu.

UpdateAllViews Funkcji składowej klasy CDocument i OnUpdate funkcji składowej klasy CView pozwalają przekazywać informacje opisujące, w jaki części dokumentu zostały zmodyfikowane.Ten mechanizm "wskazówkę" pozwala ograniczyć obszar, który należy odświeżyć widok.OnUpdateTrwa dwa argumenty "wskazówkę".Pierwszy, lHint, typu LPARAM, pozwala przekazywać wszelkie dane, które lubisz, natomiast druga, pHint, typu CObject*, pozwala przekazać wskaźnik do dowolnego obiektu, pochodzące z CObject.

Gdy widok staje się nieprawidłowy, system Windows wysyła on WM_PAINT wiadomości.Widok OnPaint funkcji obsługi odpowiada na wiadomość, tworząc obiekt kontekstu urządzenia klasy CPaintDC i wywołuje dla widoku OnDraw funkcji składowej.Zazwyczaj trzeba napisać przesłanianie OnPaint funkcji obsługi.

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

Do rysowania w widoku Kod najpierw pobiera wskaźnik do dokumentu, a następnie wykonywania wywołań rysunku za pomocą kontekstu urządzenia.Następujący prosty 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 należy zdefiniować GetData jako członek klasy pochodnej dokumentu.

Przykład drukowane niezależnie od ciągu pobiera go z dokumentu, wyśrodkowany w widoku.Jeśli OnDraw to na ekranie rysunku, CDC obiektu przekazany w pDC jest CPaintDC którego konstruktor została już wywołana BeginPaint.Wywołania funkcji rysowania odbywa się za pomocą wskaźnika kontekstu urządzenia.Uzyskać rysunku wywołań i kontekstów urządzeń, zobacz klasy CDC w Odniesienia MFC i pracy z obiektami okna.

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

Zobacz też

Informacje

Za pomocą widoków