004
18.12.2006, 21:57 Uhr
-Biohazard-
|
Damit gehts...
C++: |
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { InvalidateRect(hWnd, NULL, TRUE); HDC hdc; // Handle auf Zeichenbereich PAINTSTRUCT ps; // Zeichenbereich switch ( message ) { case WM_ERASEBKGND: // kein Flimmern! return (1); case WM_PAINT: hdc = BeginPaint( hwnd, & ps ); { // -X-X-X-X-X-X BILD HDC hdcScreen = GetDC( GetDesktopWindow() ); HDC hdcCompatible = CreateCompatibleDC( hdcScreen ); HBITMAP hbmScreen = CreateCompatibleBitmap( hdcScreen, 1280, 1024 ); SelectObject( hdcCompatible, hbmScreen ); BitBlt( hdcCompatible, 0, 0, 1280, 1024, hdcScreen, 0, 0, SRCCOPY ); StretchBlt( hdc, 0, 0, 800, 600, hdcCompatible, 0, 0, 1280, 1024, SRCCOPY ); DeleteObject( hdcCompatible ); DeleteObject( hdcScreen ); DeleteObject( hbmScreen ); // -X-X-X-X-X-X } EndPaint( hwnd, & ps ); return ( 0 ); case WM_DESTROY: PostQuitMessage( 0 ); return 0; } return DefWindowProc( hwnd, message, wParam, lParam ); }
|
Ich aktualisiere die ganze Zeit das Bild und damit kein Flimmern entsteht habe ich WM_ERASEBKGND benutzt. --
|