Author: mpiulachs Date: Thu Feb 21 20:07:01 2008 New Revision: 32442
URL: http://svn.reactos.org/svn/reactos?rev=32442&view=rev Log: - Modified to use the screensaver library - Reduce the amount of code to minimum - Remove unneeded resources
Added: trunk/reactos/base/applications/screensavers/logon/logon.def (with props) Modified: trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc trunk/reactos/base/applications/screensavers/logon/logon.c trunk/reactos/base/applications/screensavers/logon/logon.rbuild trunk/reactos/base/applications/screensavers/logon/logon.rc trunk/reactos/base/applications/screensavers/logon/resource.h
Modified: trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/bg-BG.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Âõîäåí åêðàíåí ïðåäïàçèòåë" - IDS_TITLE "Çà" IDS_TEXT "Íÿìà âúçìîæíîñò çà íàñòðîéêè." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/de-DE.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Logon Bildschirmschoner" - IDS_TITLE "Über" IDS_TEXT "Keinerlei Einstellungen notwendig." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/el-GR.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Ðñïöýëáîç ïèüíçò Logon" - IDS_TITLE "Ðåñß" IDS_TEXT "ÁõôÞ ç ðñïöýëáîç ïèüíçò äå äéáèÝôåé åðéëïãÝò ôéò ïðïßåò ìðïñåßôå íá ïñßóåôå." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/en-US.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Logon ScreenSaver" - IDS_TITLE "About" IDS_TEXT "No options need to be set." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/es-ES.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Logotipo ReactOS" - IDS_TITLE "Acerca de" IDS_TEXT "Ninguna opción necesita ser configurada." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/fr-FR.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Écran de veille de logon" - IDS_TITLE "À propos de" IDS_TEXT "Il n'y a aucune option à définir." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/it-IT.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Salvaschermo Logon" - IDS_TITLE "Informazioni su ..." IDS_TEXT "Nessuna impostazione necessaria." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/lt-LT.rc Thu Feb 21 20:07:01 2008 @@ -12,6 +12,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Logon" - IDS_TITLE "Apie" IDS_TEXT "Nëra keièiamø parametrø." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/nl-NL.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Logon Schermbeveiliging" - IDS_TITLE "Informatie" IDS_TEXT "Geen dingen om in te stellen." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/pl-PL.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Wygaszacz ekranu Logon" - IDS_TITLE "O programie..." IDS_TEXT "Brak opcji." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/ru-RU.rc Thu Feb 21 20:07:01 2008 @@ -3,6 +3,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Çàñòàâêà ""Âõîä â ñèñòåìó""" - IDS_TITLE "Î ïðîãðàììå" IDS_TEXT "Ýòà çàñòàâêà íå èìååò íàñòðàèâàåìûõ ïàðàìåòðîâ." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/sk-SK.rc Thu Feb 21 20:07:01 2008 @@ -7,6 +7,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Logon - etriè obrazovky" - IDS_TITLE "Èo je ..." IDS_TEXT "Nie sú potrebné iadne nastavenia." END
Modified: trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/lang/uk-UA.rc Thu Feb 21 20:07:01 2008 @@ -11,6 +11,5 @@ STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Çàñòàâêà ""Âõ³ä äî ñèñòåìè""" - IDS_TITLE "Ïðî" IDS_TEXT "Öÿ çàñòàâêà íå ìຠíàëàøòîâóâàíèõ ïàðàìåòð³â." END
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 (original) +++ trunk/reactos/base/applications/screensavers/logon/logon.c Thu Feb 21 20:07:01 2008 @@ -19,6 +19,7 @@ */
#include <windows.h> +#include <scrnsave.h> #include <tchar.h> #include "resource.h"
@@ -28,40 +29,8 @@ #define APP_TIMER 1 #define APP_TIMER_INTERVAL 2000
-#define BITMAP_HEIGHT 240; +#define BITMAP_HEIGHT 240 #define BITMAP_WIDTH 340 - -HINSTANCE hInstance; - -BOOL fullscreen = FALSE; - -void DrawScreen (HDC hdc, HDC hMemDC , RECT rect) -{ - int x; - int y; - int width = BITMAP_WIDTH; - int height = BITMAP_HEIGHT; - - if (!fullscreen) - { - width = width / 20; - height = height / 20; - } - - x = RANDOM (0, rect.right - width); - y = RANDOM (0, rect.bottom - height); - - BitBlt( - hdc, - x, - y, - width, - height, - hMemDC, - 0, - 0, - SRCCOPY); -}
HBITMAP GetScreenSaverBitmap (void) { @@ -74,49 +43,39 @@ switch(osvi.wProductType) { case VER_NT_WORKSTATION: - return LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_WORKSTATION)); + return LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_WORKSTATION), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION); break; default: - return LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SERVER)); + return LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_SERVER), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION); break; } }
-LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +LRESULT CALLBACK +ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - static POINT ptLast; - static POINT ptCursor; - static BOOL fFirstTime = TRUE; - - static PAINTSTRUCT ps; static RECT rect; - static HDC hDC; - static HDC hMemDC; - static HBRUSH hBlkBrush; static HBITMAP bitmap;
- switch (msg) + switch (message) { case WM_CREATE: { - hDC = GetDC(hwnd); - hBlkBrush = (HBRUSH) GetStockObject(BLACK_BRUSH); - hMemDC = CreateCompatibleDC(hDC); - GetClientRect(hwnd, &rect); + GetClientRect(hWnd, &rect);
bitmap = GetScreenSaverBitmap ();
if(bitmap == NULL) { MessageBox( - hwnd, + hWnd, _T("Fatal Error: Could not load bitmap"), _T("Error"), MB_OK | MB_ICONEXCLAMATION); }
SetTimer ( - hwnd, + hWnd, APP_TIMER, APP_TIMER_INTERVAL, NULL); @@ -124,209 +83,73 @@ break; } case WM_PAINT: - { - hDC = BeginPaint(hwnd, &ps); - SelectObject(hMemDC, bitmap); - DrawScreen (hDC , hMemDC , rect); - EndPaint(hwnd, &ps); - break; - } - case WM_TIMER : { - if (wParam == APP_TIMER) - { - InvalidateRect(hwnd, NULL, 1); - } + BITMAP bm; /* Bitmap structure as seen in bmWidth & bmHeight */ + PAINTSTRUCT ps; + + HDC hdc = BeginPaint(hWnd, &ps); + HDC hdcMem = CreateCompatibleDC(hdc); + HBITMAP hbmOld = SelectObject(hdcMem, bitmap); + + 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); + + SelectObject(hdcMem, hbmOld); + DeleteDC(hdcMem); + + EndPaint(hWnd, &ps); + break; } - case WM_ERASEBKGND: - { - SelectObject(hDC, hBlkBrush); - - PatBlt( - hDC, - 0, - 0, - rect.right, - rect.bottom, - PATCOPY); - break; - } - case WM_DESTROY: - { - KillTimer (hwnd, APP_TIMER); - DeleteObject(bitmap); - ShowCursor(TRUE); - PostQuitMessage(0); - break; - } - - // break out of screen-saver if any keyboard activity - case WM_NOTIFY: - case WM_SYSKEYDOWN: - PostMessage(hwnd, WM_CLOSE, 0, 0); - break; - - // break out of screen-saver if any mouse activity - case WM_LBUTTONDOWN: - case WM_LBUTTONUP: - case WM_RBUTTONDOWN: - case WM_RBUTTONUP: - case WM_MBUTTONDOWN: - case WM_MBUTTONUP: - case WM_MOUSEMOVE: - // If we've got a parent then we must be a preview - if(GetParent(hwnd) != 0) - return 0; - - if(fFirstTime) - { - GetCursorPos(&ptLast); - fFirstTime = FALSE; - } - - GetCursorPos(&ptCursor); - - // if the mouse has moved more than 3 pixels then exit - if(abs(ptCursor.x - ptLast.x) >= 3 || abs(ptCursor.y - ptLast.y) >= 3) - PostMessage(hwnd, WM_CLOSE, 0, 0); - - ptLast = ptCursor; - - return 0; + case WM_TIMER: + { + InvalidateRect(hWnd, NULL, 1); + break; + } + case WM_DESTROY: + { + KillTimer (hWnd, APP_TIMER); + DeleteObject(bitmap); + PostQuitMessage(0); + break; }
- return DefWindowProc(hwnd, msg, wParam, lParam); + default: + // Pass Windows Messages to the default screensaver window procedure + return DefScreenSaverProc(hWnd, message, wParam, lParam); + } + + return 0; }
-void InitSaver(HWND hwndParent) +BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { - WNDCLASS wc; - ZeroMemory(&wc, sizeof(wc)); - wc.style = CS_HREDRAW | CS_VREDRAW; - wc.lpfnWndProc = WndProc; - wc.lpszClassName = APPNAME; - wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); - RegisterClass(&wc); - - if (hwndParent != 0) - { - RECT rect; - GetClientRect(hwndParent, &rect); - CreateWindow(APPNAME, APPNAME, - WS_VISIBLE | WS_CHILD, - 0, 0, - rect.right, - rect.bottom, - hwndParent, 0, - hInstance, NULL); - fullscreen = FALSE; - } - else - { - HWND hwnd; - hwnd = CreateWindowEx(WS_EX_TOPMOST, - APPNAME, - APPNAME, - WS_VISIBLE | WS_POPUP, - 0, 0, - GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), - HWND_DESKTOP, 0, - hInstance, NULL); - - SetWindowPos(hwnd, - 0, 0, 0, 0, 0, - SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_SHOWWINDOW); - - ShowCursor(FALSE); - fullscreen = TRUE; - } + return FALSE; }
-VOID ParseCommandLine(LPWSTR szCmdLine, UCHAR *chOption, HWND *hwndParent) +// This function is only called one time before opening the configuration dialog. +// Use it to show a message that no configuration is necesssary and return FALSE to indicate that no configuration dialog shall be opened. +BOOL WINAPI RegisterDialogClasses(HANDLE hInst) { - UCHAR ch = *szCmdLine++; + TCHAR szMessage[256]; + TCHAR szTitle[25];
- if(ch == '-' || ch == '/') - ch = *szCmdLine++; + LoadString(hInst, IDS_TEXT, szMessage, sizeof(szMessage) / sizeof(TCHAR)); + LoadString(hInst, IDS_DESCRIPTION, szTitle, sizeof(szTitle) / sizeof(TCHAR));
- if(ch >= 'A' && ch <= 'Z') - ch += 'a' - 'A'; //convert to lower case + MessageBox(NULL, szMessage, szTitle, MB_OK | MB_ICONEXCLAMATION);
- *chOption = ch; - ch = *szCmdLine++; - - if(ch == ':') - ch = *szCmdLine++; - - while(ch == ' ' || ch == '\t') - ch = *szCmdLine++; - - if(isdigit(ch)) - { - unsigned int i = _wtoi(szCmdLine - 1); - *hwndParent = (HWND)i; - } - else - *hwndParent = NULL; + return FALSE; } - -void Configure(void) -{ - TCHAR szTitle[256]; - TCHAR szText[256]; - - LoadString(hInstance, - IDS_TITLE, - szTitle, - 256); - - LoadString(hInstance, - IDS_TEXT, - szText, - 256); - - MessageBox(0, - szText, - szTitle, - MB_OK | MB_ICONWARNING); -} - -int CALLBACK wWinMain (HINSTANCE hInst, - HINSTANCE hPrev, - LPWSTR lpCmdLine, - int iCmdShow) -{ - HWND hwndParent; - UINT nPreviousState; - UCHAR chOption; - MSG Message; - - hInstance = hInst; - - ParseCommandLine(lpCmdLine, &chOption, &hwndParent); - - SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &nPreviousState, 0); - - switch (chOption) - { - case 's': - InitSaver(0); - break; - - case 'p': - InitSaver(hwndParent); - break; - - case 'c': - default: - Configure(); - return 0; - } - - while (GetMessage(&Message, 0, 0, 0)) - DispatchMessage(&Message); - - SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, FALSE, &nPreviousState, 0); - - return Message.wParam; -}
Added: trunk/reactos/base/applications/screensavers/logon/logon.def URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/logon.def (added) +++ trunk/reactos/base/applications/screensavers/logon/logon.def Thu Feb 21 20:07:01 2008 @@ -1,0 +1,5 @@ +NAME logon.scr + +EXPORTS + ScreenSaverProc + ScreenSaverConfigureDialog
Propchange: trunk/reactos/base/applications/screensavers/logon/logon.def ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/base/applications/screensavers/logon/logon.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/logon.rbuild (original) +++ trunk/reactos/base/applications/screensavers/logon/logon.rbuild Thu Feb 21 20:07:01 2008 @@ -1,7 +1,9 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> <module name="logon" type="win32scr" installbase="system32" installname="logon.scr" unicode="true"> + <importlibrary definition="logon.def" /> <include base="logon">.</include> + <library>scrnsave</library> <library>kernel32</library> <library>user32</library> <library>gdi32</library>
Modified: trunk/reactos/base/applications/screensavers/logon/logon.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/logon.rc (original) +++ trunk/reactos/base/applications/screensavers/logon/logon.rc Thu Feb 21 20:07:01 2008 @@ -1,4 +1,5 @@ #include <windows.h> +#include <scrnsave.h> #include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
Modified: trunk/reactos/base/applications/screensavers/logon/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensav... ============================================================================== --- trunk/reactos/base/applications/screensavers/logon/resource.h (original) +++ trunk/reactos/base/applications/screensavers/logon/resource.h Thu Feb 21 20:07:01 2008 @@ -1,6 +1,3 @@ - -#define IDS_DESCRIPTION 1 -#define IDS_TITLE 2 #define IDS_TEXT 3 #define IDB_WORKSTATION 0x100 #define IDB_SERVER 0x200