Author: mpiulachs Date: Sun May 4 15:10:26 2008 New Revision: 33279
URL: http://svn.reactos.org/svn/reactos?rev=33279&view=rev Log: - Fix logon screensaver preview
Modified: trunk/reactos/base/applications/screensavers/logon/logon.c
Modified: trunk/reactos/base/applications/screensavers/logon/logon.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/logon.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/screensavers/logon/logon.c [iso-8859-1] Sun May 4 15:10:26 2008 @@ -29,9 +29,6 @@ #define APP_TIMER 1 #define APP_TIMER_INTERVAL 2000
-#define BITMAP_HEIGHT 240 -#define BITMAP_WIDTH 340 - HBITMAP GetScreenSaverBitmap (void) { OSVERSIONINFOEX osvi; @@ -61,8 +58,6 @@ { case WM_CREATE: { - GetClientRect(hWnd, &rect); - bitmap = GetScreenSaverBitmap ();
if(bitmap == NULL) @@ -87,25 +82,44 @@ BITMAP bm; /* Bitmap structure as seen in bmWidth & bmHeight */ PAINTSTRUCT ps;
+ // Obtain window coordinates. + GetClientRect (hWnd, &rect); + HDC hdc = BeginPaint(hWnd, &ps); HDC hdcMem = CreateCompatibleDC(hdc); HBITMAP hbmOld = SelectObject(hdcMem, bitmap);
- GetObject(bitmap, sizeof(bm), &bm); + GetObject(bitmap, sizeof(bm), &bm);
- bm.bmWidth = 1000; - bm.bmHeight = 700; - - BitBlt( - hdc, - RANDOM (0, rect.right - BITMAP_WIDTH), - RANDOM (0, rect.bottom - BITMAP_HEIGHT), - bm.bmWidth, - bm.bmHeight, - hdcMem, - 5, - 5, - SRCCOPY); + if (rect.right < bm.bmWidth || + rect.bottom < bm.bmHeight) + { + StretchBlt( + hdc, + RANDOM (0, rect.right - (bm.bmWidth /5)), + RANDOM (0, rect.bottom - (bm.bmHeight /5)), + bm.bmWidth /5, + bm.bmHeight /5, + hdcMem, + 0, + 0, + bm.bmWidth, + bm.bmHeight, + SRCCOPY); + } + else + { + BitBlt( + hdc, + RANDOM (0, rect.right - bm.bmWidth), + RANDOM (0, rect.bottom - bm.bmHeight), + bm.bmWidth, + bm.bmHeight, + hdcMem, + 0, + 0, + SRCCOPY); + }
SelectObject(hdcMem, hbmOld); DeleteDC(hdcMem);