From d1dcdd7a8dff1a167b9eddbd248f34bb5aa0ba8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Tue, 25 Nov 2003 23:47:10 +0000 Subject: [PATCH] Fix DC leak svn path=/trunk/; revision=6798 --- reactos/lib/user32/windows/nonclient.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/reactos/lib/user32/windows/nonclient.c b/reactos/lib/user32/windows/nonclient.c index 634167221fc..5c32a9cdd05 100644 --- a/reactos/lib/user32/windows/nonclient.c +++ b/reactos/lib/user32/windows/nonclient.c @@ -790,6 +790,7 @@ DefWndDoButton(HWND hWnd, WPARAM wParam) BOOL InBtn, HasBtn = FALSE; ULONG Btn, Style; WPARAM SCMsg, CurBtn = wParam, OrigBtn = wParam; + HDC WindowDC; Style = GetWindowLongW(hWnd, GWL_STYLE); switch(wParam) @@ -818,7 +819,10 @@ DefWndDoButton(HWND hWnd, WPARAM wParam) SetCapture(hWnd); if(HasBtn) - UserDrawCaptionButtonWnd( hWnd, GetWindowDC(hWnd), HasBtn , Btn); + { + WindowDC = GetWindowDC(hWnd); + UserDrawCaptionButtonWnd(hWnd, WindowDC, HasBtn , Btn); + } while(1) { @@ -832,6 +836,8 @@ DefWndDoButton(HWND hWnd, WPARAM wParam) else { ReleaseCapture(); + if (HasBtn) + ReleaseDC(hWnd, WindowDC); return; } case WM_NCMOUSEMOVE: @@ -841,7 +847,7 @@ DefWndDoButton(HWND hWnd, WPARAM wParam) CurBtn = DefWndNCHitTest(hWnd, Msg.pt); if(InBtn != (CurBtn == OrigBtn)) { - UserDrawCaptionButtonWnd( hWnd, GetWindowDC(hWnd), (CurBtn == OrigBtn) , Btn); + UserDrawCaptionButtonWnd( hWnd, WindowDC, (CurBtn == OrigBtn) , Btn); } InBtn = CurBtn == OrigBtn; } @@ -850,7 +856,8 @@ DefWndDoButton(HWND hWnd, WPARAM wParam) } done: - UserDrawCaptionButtonWnd( hWnd, GetWindowDC(hWnd), FALSE , Btn); + UserDrawCaptionButtonWnd( hWnd, WindowDC, FALSE , Btn); + ReleaseDC(hWnd, WindowDC); ReleaseCapture(); SendMessageA(hWnd, WM_SYSCOMMAND, SCMsg, 0); return;