Aracılığıyla paylaş


Bir görünümde çizim

Neredeyse tüm çizim uygulamanızda görünümün içinde ortaya OnDraw görünüm sınıfınızda geçersiz kılma üye işlevi. (Çizim, anlatıldığı fare istisnadır Yorumlama kullanıcı girişi aracılığıyla bir görünüm.) Sizin OnDraw geçersiz kılar:

  1. Belge size üye işlevlerini çağırarak verileri alır.

  2. Framework geçirir bir aygıt içeriğini nesnenin üye işlevlerini çağırarak verileri görüntüler OnDraw.

Bir belgenin veri herhangi bir şekilde değiştiğinde görünüm değişiklikleri yansıtacak şekilde yeniden gerekir. Genellikle, kullanıcı belge üzerinde bir görünümü aracılığıyla bir değişiklik yaptığında bu olur. Bu durumda belgenin görünümü çağıran UpdateAllViews kendilerini güncelleştirecek şekilde aynı belgedeki tüm görünümlerde bildirmek için üye işlevi. UpdateAllViewsher görünümün çağıran OnUpdate üye işlevi. Varsayılan uygulama olarak OnUpdate görünümün tüm istemci alanı geçersiz kılar. Yalnızca belgenin değiştirilmiş kısımlarını eşleme bu bölgelerdeki istemci alanının geçersiz kılmasını kılabilirsiniz.

UpdateAllViews Sınıfının üye işlev CDocument ve OnUpdate sınıfının üye işlev CView belgenin hangi bölümleri değiştirilmiş açıklayan bilgi geçişi sağlar. Bu "İpucu" mekanizması görünümü yeniden çizmek için gereken alanı sınırlandırmanıza olanak sağlar. OnUpdateiki "İpucu" baðýmsýz deðiþken alýr. İlk lHint, tür lparam, istediğiniz ikinci veri geçişi sağlar pHint, tür CObject*, türetilen herhangi bir nesneye bir işaretçi geçmesine olanak CObject.

Bir görünümü geçersiz olduğunda Windows bunu gönderir bir WM_PAINT ileti. Görünümün OnPaint işleyicisi işlevi yanıt iletisi aygıt içeriği nesne sınıfının oluşturarak CPaintDC ve Görünüm 's OnDraw üye işlevi. Normalde bir geçersiz kılma yazmak gerekmez OnPaint işleyicisi işlevi.

A aygıt içeriğini bir ekran veya yazıcı gibi bir aygıta çizim öznitelikler hakkında bilgi içeren bir Windows veri yapısıdır. Tüm çizim aramalar aygıt içerik nesnesi üzerinden yapılır. Ekran üzerinde çizim OnDraw geçirilen bir CPaintDC nesnesi. Yazıcı üzerinde çizim için onu geçirilen bir hdm nesne için geçerli yazıcı ayarlayın.

Kod görünümünde çizim ilk belge için bir işaretçi alır ve aygıt içeriği aracılığıyla çizim çağrıları yapar. Aşağıdaki basit OnDraw işlem örneği gösterilmektedir:

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

Bu örnekte, tanımlamak GetData türetilmiş belge sınıfının üyesi olarak işlev.

Örnek görünümünde ortalanmış belgeden alır ne olursa olsun dize yazdırır. OnDraw Çağrısıdır ekran çizim için CDC nesneyi geçirilen pDC olan bir CPaintDC , Oluşturucu adlı BeginPaint. Çizim işlevleri için çağrılar aygıt içeriğini işaretçi yapılır. Sınıf aygıtı içerikleri ve çizim aramalar hakkında daha fazla bilgi için bkz: hdm , mfc başvuru ve Window nesneleriyle çalışma.

Yazma hakkında daha fazla örnek için OnDraw, bakın mfc Örnekleri.

Ayrıca bkz.

Başvuru

Görünümleri kullanma