[API Window C++] Probleme de rafraichissement de la fenetre
Bonjour,
J'ai un soucis que je n'arrive pas a résoudre, lorsque je redimensionne ma fenêtre en tirant en bas a droite j'ai une trainée au niveau de la fenêtre windows.
dans le WM_PAINT le code suivant fonctionne parfaitement:
Code:
1 2 3 4 5 6 7 8 9
|
PAINTSTRUCT ps;
HDC hdc = BeginPaint(MainHWND(), &ps);
// All painting occurs here, between BeginPaint and EndPaint.
FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1));
EndPaint(MainHWND(), &ps); |
mais le code suivant que je devrait utiliser ne fonctionne pas, la fenêtre ne se mat pas à jours:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
HDC hdcMem;
HBITMAP hbmMem;
PAINTSTRUCT ps;
//hRgnUpdate = ::CreateRectRgn(0, 0, 0, 0);
//::GetUpdateRgn(MainHWND(), hRgnUpdate, FALSE);
::BeginPaint(MainHWND(), &ps);
RECT rc;
::GetClientRect(MainHWND(), &rc);
hdcMem = CreateCompatibleDC(ps.hdc);
hbmMem = CreateCompatibleBitmap(ps.hdc, rc.right - rc.left, rc.bottom - rc.top);
SelectObject(hdcMem, hbmMem);
int width = rc.right - rc.left;
int height = rc.bottom - rc.top;
RECT rect = { 0, 0, width, height };
DWORD fill = SetBkColor(hdcMem, COLOR_WINDOW);
ExtTextOut(hdcMem, 0, 0, ETO_CLIPPED, &rect, TEXT(""), 0, NULL);
SetBkColor(hdcMem, fill);
DeleteDC(hdcMem);
DeleteObject(hbmMem);
::EndPaint(MainHWND(), &ps);
//DeleteObject(hRgnUpdate);
/*if (hRgnUpdate) {
::DeleteRgn(hRgnUpdate);
hRgnUpdate = 0;
}*/ |
J'ai tenté de modifier l'ordre des DeleteObject a la fin mais ça ne donne rien ainsi que ETO_OPAQUE au lieu de ETO_CLIPPED, ETO_OPAQUE me met la window en noir.
Avez vous une idée ?
Merci de votre aide.