Sdílet prostřednictvím


Kreslení v zobrazení

V zobrazení téměř všechny kresby v aplikaci dojde k OnDraw členské funkce, které je třeba přepsat v zobrazení třídy. (Výjimkou je myš, kreslení, zabývá Interpretace vstup uživatele prostřednictvím zobrazení.) Vaše OnDraw přepsat:

  1. Získá data voláním členské funkce, které poskytnete v dokumentu.

  2. Zobrazí data voláním členské funkce objektu kontextu zařízení, který předává architektura na OnDraw.

Při změně dat do dokumentu v nějakým způsobem, zobrazení musí být vystavena tak, aby odrážely změny.Obvykle k tomu dojde, když uživatel provede změny prostřednictvím zobrazení dokumentu.V tomto případě volá zobrazení dokumentu UpdateAllViews členské funkce upozornit všechny pohledy na stejný dokument aktualizovat sami.UpdateAllViewskaždé zobrazení volá OnUpdate členské funkce.Výchozí implementace OnUpdate zruší platnost na zobrazení celé oblasti klienta.Můžete přepsat tak, aby zrušily platnost pouze ty oblasti klientské oblasti, které jsou mapovány na změněné části dokumentu.

UpdateAllViews Členské funkce třídy CDocument a OnUpdate členské funkce třídy CView umožňují předat informace popisující části dokumentu, které byly změněny.Tento mechanismus "Nápověda" umožňuje omezit oblasti zobrazení musí překreslit.OnUpdatepřijímá dva argumenty "Nápověda".První, lHint, typ LPARAM, vám umožňuje předat data vám líbí, zatímco druhý, pHint, typu CObject*, vám umožňuje předat ukazatel na libovolný objekt odvozené z CObject.

Při zobrazení se stane neplatným, odešle systém Windows jej WM_PAINT zprávy.V zobrazení OnPaint funkce obslužné rutiny odpovídá na zprávu vytvoříte objekt kontextu zařízení třídy CPaintDC a volá do zobrazení OnDraw členské funkce.Obvykle nemáte psát přepsání OnPaint funkce obslužné rutiny.

A kontextu zařízení je datová struktura systému Windows, který obsahuje informace o atributy výkresu zařízení, jako je monitor nebo tiskárna.Všechny nakreslené volání prostřednictvím objektu kontext zařízení.Pro kreslení na obrazovce, OnDraw je předán CPaintDC objektu.Pro kreslení na tiskárně, je předán CSP objekt nastavení pro aktuální tiskárnu.

Pro kreslení v zobrazení kódu nejprve načte ukazatel na dokument a poté volá výkresu pomocí kontextu zařízení.Následující jednoduchý OnDraw příklad znázorňuje 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());
}

V tomto příkladu můžete definovat GetData pracovat jako člen třídy odvozené dokumentu.

V příkladu se vytiskne bez ohledu řetězec dostane z dokumentu, na střed v zobrazení.Pokud OnDraw volání je pro kreslení na obrazovku, CDC objektu předaný pDC je CPaintDC již byla volána jejichž konstruktor BeginPaint.Pro kreslení funkce volání prostřednictvím ukazatele kontextu zařízení.Informace o kontextu zařízení a kreslení volání, naleznete ve třídě CSP v Odkaz knihovny MFC a práce s objekty okno.

Další příklady, jak napsat OnDraw, naleznete Ukázky knihovny MFC.

Viz také

Referenční dokumentace

Použití zobrazení