V zobrazení výkresu
Téměř všechny kresby v aplikaci dojde k zobrazení v OnDraw funkci členu musí přepsat ve své třídě zobrazení.(Jedinou výjimkou je myš výkres, je popsána v Interpretace vstup uživatele prostřednictvím zobrazení.) Vaše OnDraw přepsat:
Získá data dokumentu voláním funkce členů, které poskytujete.
Zobrazí data voláním funkce členů kontext zařízení objektu, který předává rámci OnDraw.
Při změně dat v dokumentu aplikace nějakým způsobem zobrazení musí překreslit tak, aby odrážely změny.Obvykle k tomu dojde, když uživatel provede změny pomocí zobrazení dokumentu.V tomto případě volá zobrazení dokumentu UpdateAllViews členské funkce upozornit všechny názory na stejném dokumentu aktualizovat sami.UpdateAllViewskaždé zobrazení volá OnUpdate členské funkce.Výchozí implementace OnUpdate zruší platnost v zobrazení celé oblasti klienta.Přepsat ho neruší pouze těchto regionů klientské oblasti, které mapují na změněné části dokumentu.
UpdateAllViews Členské funkce třídy CDocument a OnUpdate členské funkce třídy CView umožňují předávat informace popisující jaké části dokumentu byly změněny.Tento mechanismus "Nápověda" umožňuje omezit oblast zobrazení musí překreslit.OnUpdatemá dva argumenty "Nápověda".První, lHint, typ LPARAM, umožňuje předat data spokojeni, zatímco druhý, pHint, typu CObject*, umožňuje předat ukazatel na libovolný objekt odvozené z CObject.
Jakmile neplatná zobrazení Windows odešle WM_PAINT zprávy.V zobrazení OnPaint funkci zpracování zprávy reaguje vytváření kontextu zařízení objektu třídy CPaintDC a volá vaše zobrazení OnDraw členské funkce.Obvykle nemáte zapsat potlačení OnPaint funkci zpracování.
A kontext zařízení je datová struktura systému Windows, která obsahuje informace o výkresu atributy zařízení jako například 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 CDC objektu pro aktuální tiskárnu.
Pro kreslení v zobrazení Kód nejprve získá ukazatel do dokumentu pak provádí výkresu volání prostřednictvím kontextu zařízení.Následující jednoduchý OnDraw příklad ilustruje:
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 definovat GetData jako člen třídy odvozené dokumentu.
V příkladu se vytiskne jakékoli řetězec získává z dokumentu v zobrazení.Pokud OnDraw výkresu obrazovky je volání CDC předaný objekt pDC je CPaintDC již volána jehož konstruktoru BeginPaint.Volání funkce pro kreslení se provádí pomocí ukazatele kontext zařízení.Informace o kontextech zařízení a výkresu volání, viz třída CDC v MFC odkaz a práci s objekty v okně.
Další příklady jak psát OnDraw, najdete MFC vzorků.