Jeżeli masz kod, który nie działa najlepiej go tutaj wkleić.
Podwójne buforowanie ja implementuję tak:
case WM_PAINT:
{
HDC hDC; // (1)
HDC hdcMem; // (2)
PAINTSTRUCT ps;
hDC=BeginPaint(hwndChild,&ps); // (3)
hdcMem=CreateCompatibleDC(hDC); // (4)
... // (5)
BitBlt(hDC,0,0,200,200,hdcMem,0,0,SRCCOPY); // (6)
DeleteDC(hdcMem); // (7)
EndPaint(hwndChild,&ps); // (8)
}
break;
Komentarze do linijek:
1. Deklarujesz uchwyt kontekstu ekranu (pierwszoplanowy).
2. Deklarujesz uchwyt kontekstu w pamięci (drugoplanowy).
3. Zaczynasz rysować (pobierasz uchwyt kontekstu ekranowego).
4. Tworzysz kontekst kompatybilny z ekranowym (w sensie ilości kolorów i innych parametrów) i pobierasz uchwyt do niego.
5. Tu sobie rysujesz na kontekscie w pamięci, czyli np. : Ellipse(hdcMem,50,50,100,100);.
6. Kopiujesz szybko zawartość jednego kontekstu do drugiego.
7. Zwalniasz kontekst w pamięci.
8. Kończysz rysowanie.