Windows her pencere için ismine güncelleme alanı (update region) denilen dikdörtgensel bir alan tutar. Bu dikdörtgensel alan pencere görüntüsünün bozulduğu bölgeyi temsil etmektedir. Windows pencere içerisindeki görüntüyü programcı için saklamaz. Bozulan görüntünün yeniden çizilmesi programcının sorumluluğundadır. Windows belirli periyodlarla tüm pencerelerin güncelleme alanlarını izler. Güncelleme alanı boş küme olmayan pencereler için WM_PAINT mesajını yollar. Programcı tüm çizim işlemlerini WM_PAINT mesajında yapmalıdır. Çizim başka bir yerde yapılırsa WM_PAINT mesajı geldiğinde o görüntü yeniden çizilemeyecektir, böylece görüntü kaybı oluşacaktır. Ancak çizimin WM_PAINT dışında yapılması gerektiği durumlarda vardır. Bu durumda aynı çizimlerin WM_PAINT mesajında yeniden oluşturulması gerekir. Bunun için iki strateji izlenebilir:
1) Dışarıda yapılan çizimlerin aynı zamanda bir veri yapısı içerisinde tutulması ve WM_PAINT mesajı içerisinde o veri yapısına bakılarak yeniden çizilmesi.
2) Çizimin hem pencereye hem de bellek DC’sine yapılması. WM_PAINT mesajında BitBlt API fonksiyonuyla bellek DC’sinden pencere DC’sine kopyalama yapılması.
Çizim karmaşık ve çok bileşenli bir olaydır. Çizim bileşenleri bir handle alanında tutulur. Bu handle alanına DC (Device Context) denir. DC elde etmek için BeginPaint, GetDC ve GetWindowDC fonksiyonları vardır. DC alanındaki çizim bileşenleri DC yaratıldığında default değerlerle doldurulur. Ancak daha sonra SelectObject API fonksiyonuyla değiştirilebilir. DC alan fonksiyonlar arasında önemli farklılıklar vardır.