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 : 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);
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
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.