toolbarhintergrund
-
danke für deine hilfe
hier meine lösung:
LRESULT CALLBACK ToolProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { HBRUSH hBrush = NULL; RECT rect; switch( nMsg ) { case WM_ERASEBKGND: GetClientRect( hWnd, &rect ); hBrush = CreateSolidBrush( RGB(111 , 111 , 111 ) ); FillRect( (HDC)wParam , &rect , hBrush ); return (LONG)hBrush; } return CallWindowProc( (WNDPROC)proc , hWnd , nMsg , wParam , lParam ); }
-
Nicht ganz. So is' besser:
LRESULT CALLBACK ToolProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { static HBRUSH hBrush = NULL; static RECT rect; switch( nMsg ) { case WM_CREATE: hBrush = CreateSolidBrush( RGB(111 , 111 , 111 ) ); return 0; case WM_ERASEBKGND: GetClientRect( hWnd, &rect ); FillRect( (HDC)wParam , &rect , hBrush ); return 1; case WM_DESTROY: DeleteObject(hBrush); break; } return CallWindowProc( (WNDPROC)proc , hWnd , nMsg , wParam , lParam ); }
[ Dieser Beitrag wurde am 12.04.2003 um 23:30 Uhr von WebFritzi editiert. ]
-
ok, den brush gibst du aber immer noch nicht frei :p
-
immer noch nicht
-
LOL, stimmt. Habs jetzt verbessert.
-
ists ok wenn ichs mit in WM_CLOSE reingebaut habe ?
DeleteObject( hBrush )
-
ok, danke euch beiden
schön abend noch !
-
Bin mir nicht sicher. Mit WM_DESTROY bist du auf jeden Fall auf der sicheren Seite. Ach ja, und gib in WM_ERASEBKGND 1 zurück!
-
wieso das ?
-
hauptsache nicht 0...
-
MSDN:
An application should return nonzero in response to WM_ERASEBKGND if it processes the message and erases the background.
-
ja und? ein gültiger brush ist doch != 0
-
Trotzdem verwirrt das beim Durchlesen.