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:
mais le code suivant que je devrait utiliser ne fonctionne pas, la fenêtre ne se mat pas à jours:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }*/
Avez vous une idée ?
Merci de votre aide.
Partager