Effacer le contenu d'une fenetre...

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 20 déc. 2003 à 00:39
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 20 déc. 2003 à 01:00
Salut,

Actuellement, pour effacer l'ecran je trace un rectangle plein blanc sur la fenetre.
Or bizarrement, cette methode fait anormalement ramer le PC !
Existe-t-il une methode plus rapide (pas hyper lente au moins) pour effacer l'ecran?

Sinon, peut-on faire du buffering sans utiliser DirectDraw sur une fenetre Windows?
Si oui, comment.

Merci beaucoup

1 réponse

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
20 déc. 2003 à 01:00
double buffering :

dans WM_PAINT :

PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);

RECT rcClient;
GetClientRect(hWnd, &rcClient);

// création DC en mémoire et bitmap
HDC hMemDC = CreateCompatibleDC(hdc);
HBITMAP hMemBmp = CreateCompatibleBitmap(hdc,
rcClient.right, rcClient.bottom);
HBITMAP hOldBmp = (HBITMAP) SelectObject(hMemDC,
hMemBmp);

// effacement fond
FillRect(hMemDC, &rcClient, (HBRUSH) GetStockBrush(WHITE_BRUSH));

// dessin (dans hMemDC)
...........

// recopie à l'écran
BitBlt(hdc, 0, 0, rcClient.right, rcClient.bottom, hMemDC,
0, 0, SRCCOPY);

// libération ressources
SelectObject(hMemDC, hOldBmp);
DeleteObject(hMemBmp);
DeleteDC(hMemDC);

// fin du dessin
EndPaint(hWnd, &ps);
0
Rejoignez-nous