diff --git a/reactos/base/applications/screensavers/3dtext/3dtext.c b/reactos/base/applications/screensavers/3dtext/3dtext.c index 218f51ace56..93b5e8ce2e3 100644 --- a/reactos/base/applications/screensavers/3dtext/3dtext.c +++ b/reactos/base/applications/screensavers/3dtext/3dtext.c @@ -19,6 +19,7 @@ */ #include +#include #include #include #include @@ -27,11 +28,11 @@ #include "resource.h" #include "3dtext.h" -static HGLRC hRC; // Permanent Rendering Context -static HDC hDC; // Private GDI Device Context +static HGLRC hRC; // Permanent Rendering Context +static HDC hDC; // Private GDI Device Context -GLuint base; // Base Display List For The Font Set -GLfloat rot; // Used To Rotate The Text +GLuint base; // Base Display List For The Font Set +GLfloat rot; // Used To Rotate The Text GLfloat extentX = 0.0f; GLfloat extentY = 0.0f; @@ -47,7 +48,7 @@ GLvoid BuildFont(GLvoid) GLYPHMETRICSFLOAT gmf[256]; // Windows Font Handle HFONT font; - int i; + size_t i; TCHAR c; GLfloat cellOriginX = 0.0f; GLfloat stringOriginX; @@ -58,31 +59,31 @@ GLvoid BuildFont(GLvoid) base = glGenLists(256); font = CreateFont(-12, - 0, // Width Of Font - 0, // Angle Of Escapement - 0, // Orientation Angle - FW_BOLD, // Font Weight - FALSE, // Italic - FALSE, // Underline - FALSE, // Strikeout - DEFAULT_CHARSET, // Character Set Identifier - OUT_TT_PRECIS, // Output Precision - CLIP_DEFAULT_PRECIS, // Clipping Precision - ANTIALIASED_QUALITY, // Output Quality - FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch - _T("Tahoma")); // Font Name + 0, // Width Of Font + 0, // Angle Of Escapement + 0, // Orientation Angle + FW_BOLD, // Font Weight + FALSE, // Italic + FALSE, // Underline + FALSE, // Strikeout + DEFAULT_CHARSET, // Character Set Identifier + OUT_TT_PRECIS, // Output Precision + CLIP_DEFAULT_PRECIS, // Clipping Precision + ANTIALIASED_QUALITY, // Output Quality + FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch + _T("Tahoma")); // Font Name // Selects The Font We Created SelectObject(hDC, font); - wglUseFontOutlines(hDC, // Select The Current DC - 0, // Starting Character - 255, // Number Of Display Lists To Build - base, // Starting Display Lists - 0.0f, // Deviation From The True Outlines - 0.2f, // Font Thickness In The Z Direction - WGL_FONT_POLYGONS, // Use Polygons, Not Lines - gmf); // Address Of Buffer To Recieve Data + wglUseFontOutlines(hDC, // Select The Current DC + 0, // Starting Character + 255, // Number Of Display Lists To Build + base, // Starting Display Lists + 0.0f, // Deviation From The True Outlines + 0.2f, // Font Thickness In The Z Direction + WGL_FONT_POLYGONS, // Use Polygons, Not Lines + gmf); // Address Of Buffer To Recieve Data // Calculate the string extent for (i = 0; i < _tcslen(m_Text); i++) @@ -231,9 +232,9 @@ GLvoid DrawGLScene(GLvoid) 0.0f); // Pulsing Colors Based On The Rotation - glColor3f((1.0f * (cos(rot / 20.0f))), - (1.0f * (sin(rot / 25.0f))), - (1.0f - 0.5f * (cos(rot / 17.0f)))); + glColor3f((1.0f * (GLfloat)(cos(rot / 20.0f))), + (1.0f * (GLfloat)(sin(rot / 25.0f))), + (1.0f - 0.5f * (GLfloat)(cos(rot / 17.0f)))); // Print GL Text To The Screen glPrint(m_Text); @@ -246,41 +247,37 @@ GLvoid DrawGLScene(GLvoid) } LRESULT CALLBACK -WndProc(HWND hWnd, - UINT message, - WPARAM wParam, - LPARAM lParam) +ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - static POINT ptLast; - static POINT ptCursor; - static BOOL fFirstTime = TRUE; - RECT Screen; // Used Later On To Get The Size Of The Window - GLuint PixelFormat; // Pixel Format Storage - static PIXELFORMATDESCRIPTOR pfd= // Pixel Format Descriptor + RECT Screen; // Used Later On To Get The Size Of The Window + GLuint PixelFormat; // Pixel Format Storage + static PIXELFORMATDESCRIPTOR pfd= // Pixel Format Descriptor { - sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor - 1, // Version Number (?) - PFD_DRAW_TO_WINDOW | // Format Must Support Window - PFD_SUPPORT_OPENGL | // Format Must Support OpenGL - PFD_DOUBLEBUFFER, // Must Support Double Buffering - PFD_TYPE_RGBA, // Request An RGBA Format - 16, // Select A 16Bit Color Depth - 0, 0, 0, 0, 0, 0, // Color Bits Ignored (?) - 0, // No Alpha Buffer - 0, // Shift Bit Ignored (?) - 0, // No Accumulation Buffer - 0, 0, 0, 0, // Accumulation Bits Ignored (?) - 16, // 16Bit Z-Buffer (Depth Buffer) - 0, // No Stencil Buffer - 0, // No Auxiliary Buffer (?) - PFD_MAIN_PLANE, // Main Drawing Layer - 0, // Reserved (?) - 0, 0, 0 // Layer Masks Ignored (?) + sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor + 1, // Version Number (?) + PFD_DRAW_TO_WINDOW | // Format Must Support Window + PFD_SUPPORT_OPENGL | // Format Must Support OpenGL + PFD_DOUBLEBUFFER, // Must Support Double Buffering + PFD_TYPE_RGBA, // Request An RGBA Format + 16, // Select A 16Bit Color Depth + 0, 0, 0, 0, 0, 0, // Color Bits Ignored (?) + 0, // No Alpha Buffer + 0, // Shift Bit Ignored (?) + 0, // No Accumulation Buffer + 0, 0, 0, 0, // Accumulation Bits Ignored (?) + 16, // 16Bit Z-Buffer (Depth Buffer) + 0, // No Stencil Buffer + 0, // No Auxiliary Buffer (?) + PFD_MAIN_PLANE, // Main Drawing Layer + 0, // Reserved (?) + 0, 0, 0 // Layer Masks Ignored (?) }; switch (message) { case WM_CREATE: + LoadSettings(); + // Gets A Device Context For The Window hDC = GetDC(hWnd); @@ -338,7 +335,6 @@ WndProc(HWND hWnd, break; case WM_DESTROY: - case WM_CLOSE: // Disable Fullscreen Mode ChangeDisplaySettings(NULL, 0); @@ -353,9 +349,6 @@ WndProc(HWND hWnd, // Free The DC ReleaseDC(hWnd, hDC); - - // Quit The Program - PostQuitMessage(0); break; case WM_PAINT: @@ -363,157 +356,48 @@ WndProc(HWND hWnd, SwapBuffers(hDC); break; - case WM_NOTIFY: - case WM_SYSKEYDOWN: - PostMessage(hWnd, WM_CLOSE, 0, 0); - break; - - 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_SIZE: // Resizing The Screen // Resize To The New Window Size ReSizeGLScene(LOWORD(lParam), HIWORD(lParam)); break; default: - // Pass Windows Messages - return DefWindowProc(hWnd, message, wParam, lParam); + // Pass Windows Messages to the default screensaver window procedure + return DefScreenSaverProc(hWnd, message, wParam, lParam); } return 0; } -VOID InitSaver(HWND hwndParent) -{ - WNDCLASS wc; - - ZeroMemory(&wc, sizeof(wc)); - wc.style = CS_HREDRAW | CS_VREDRAW; - wc.lpfnWndProc = WndProc; - wc.lpszClassName = APPNAME; - 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 = CreateWindow(APPNAME, APPNAME, - WS_VISIBLE | WS_POPUP | WS_EX_TOPMOST, - 0, 0, - GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), - HWND_DESKTOP, 0, - hInstance, NULL); - ShowWindow(hwnd, SW_SHOWMAXIMIZED); - ShowCursor(FALSE); - fullscreen = TRUE; - } -} - -// -// Look for any options Windows has passed to us: -// -// -a (set password) -// -s (screensave) -// -p (preview) -// -c (configure) -// -VOID ParseCommandLine(LPTSTR szCmdLine, UCHAR *chOption, HWND *hwndParent) -{ - TCHAR ch = *szCmdLine++; - - if (ch == _T('-') || ch == _T('/')) - ch = *szCmdLine++; - - //convert to lower case - if (ch >= _T('A') && ch <= _T('Z')) - ch += _T('a') - _T('A'); - - *chOption = ch; - ch = *szCmdLine++; - - if (ch == _T(':')) - ch = *szCmdLine++; - - while (ch == _T(' ') || ch == _T('\t')) - ch = *szCmdLine++; - - if (_istdigit(ch)) - { - unsigned int i = _ttoi(szCmdLine - 1); - *hwndParent = (HWND)i; - } - else - { - *hwndParent = NULL; - } -} - - // // Dialogbox procedure for Configuration window // -BOOL CALLBACK ConfigDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +BOOL CALLBACK ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: - SetDlgItemText(hwnd, IDC_MESSAGE_TEXT, m_Text); + LoadSettings(); + SetDlgItemText(hDlg, IDC_MESSAGE_TEXT, m_Text); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: - GetDlgItemText(hwnd, IDC_MESSAGE_TEXT, m_Text, MAX_PATH); + GetDlgItemText(hDlg, IDC_MESSAGE_TEXT, m_Text, MAX_PATH); SaveSettings(); - EndDialog(hwnd, IDOK); - break; + + /* Fall through */ case IDCANCEL: - EndDialog(hwnd, IDCANCEL); + EndDialog(hDlg, IDCANCEL); break; } return FALSE; case WM_CLOSE: - EndDialog(hwnd, 0); + EndDialog(hDlg, 0); break; default: @@ -523,46 +407,7 @@ BOOL CALLBACK ConfigDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return TRUE; } -VOID Configure(VOID) +BOOL WINAPI RegisterDialogClasses(HANDLE hInst) { - DialogBox(hInstance, MAKEINTRESOURCE(IDD_CONFIG), NULL , (DLGPROC)ConfigDlgProc); + return TRUE; } - -INT CALLBACK -_tWinMain(HINSTANCE hInst, - HINSTANCE hPrev, - LPTSTR lpCmdLine, - INT iCmdShow) -{ - HWND hwndParent = 0; - UCHAR chOption; - MSG Message; - - hInstance = hInst; - - ParseCommandLine(lpCmdLine, &chOption, &hwndParent); - - LoadSettings(); - - switch (chOption) - { - case _T('s'): - InitSaver(0); - break; - - case _T('p'): - InitSaver(hwndParent); - break; - - case _T('c'): - default: - Configure(); - return 0; - } - - while (GetMessage(&Message, 0, 0, 0)) - DispatchMessage(&Message); - - return Message.wParam; -} - diff --git a/reactos/base/applications/screensavers/3dtext/3dtext.def b/reactos/base/applications/screensavers/3dtext/3dtext.def new file mode 100644 index 00000000000..6e908d7fbf4 --- /dev/null +++ b/reactos/base/applications/screensavers/3dtext/3dtext.def @@ -0,0 +1,5 @@ +NAME 3dtext.scr + +EXPORTS + ScreenSaverProc + ScreenSaverConfigureDialog diff --git a/reactos/base/applications/screensavers/3dtext/3dtext.rbuild b/reactos/base/applications/screensavers/3dtext/3dtext.rbuild index 052641bf6a7..1bf16ad7658 100644 --- a/reactos/base/applications/screensavers/3dtext/3dtext.rbuild +++ b/reactos/base/applications/screensavers/3dtext/3dtext.rbuild @@ -1,7 +1,8 @@ - - + + + scrnsave kernel32 user32 gdi32 diff --git a/reactos/base/applications/screensavers/3dtext/lang/bg-BG.rc b/reactos/base/applications/screensavers/3dtext/lang/bg-BG.rc index 602707ed7bb..06f572d7b91 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/bg-BG.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/bg-BG.rc @@ -1,6 +1,6 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME| DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Настройки на екранния предпазител ""Тримерен текст""." FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -8,12 +8,10 @@ BEGIN DEFPUSHBUTTON "Добре",IDOK,216,7,50,14 PUSHBUTTON "Отказ",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Собствен текст",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Собствен текст",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Екранен предпазител ""Тримерен текст""." - IDS_TITLE "За" - IDS_TEXT "Няма нужда от настройки." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/de-DE.rc b/reactos/base/applications/screensavers/3dtext/lang/de-DE.rc index d8b2d9b31ca..d6df75d4ba7 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/de-DE.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/de-DE.rc @@ -1,19 +1,17 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "3D Text Bildschirmschoner Einstellungen" +CAPTION "3D-Text Bildschirmschoner-Einstellungen" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Abbrechen",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Eigener Text",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Eigener Text:",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "3D Text Bildschirmschoner" - IDS_TITLE "Ьber" - IDS_TEXT "Keine Einstellungen nцtig." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/el-GR.rc b/reactos/base/applications/screensavers/3dtext/lang/el-GR.rc index 941c4e7f981..6bb6fe3e266 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/el-GR.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/el-GR.rc @@ -1,6 +1,6 @@ LANGUAGE LANG_GREEK, SUBLANG_DEFAULT -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "СхимЯуейт КеймЭнпх 3Д" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -8,12 +8,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "ўкхсп",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "РспубсмпумЭнп кеЯменп:",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "РспубсмпумЭнп кеЯменп:",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Рспцэлбоз пиьнзт ме кеЯменп 3Д" - IDS_TITLE "РесЯ" - IDS_TEXT "БхфЮ з рспцэлбоз пиьнзт де дйбиЭфей ерйлпгЭт фйт прпЯет мрпсеЯфе нб псЯуефе." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/en-US.rc b/reactos/base/applications/screensavers/3dtext/lang/en-US.rc index 2cdbf44531b..2bab0a16c69 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/en-US.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/en-US.rc @@ -1,6 +1,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "3D Text Screensaver Settings" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -8,12 +8,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Custom text",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Custom text",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "3D Text ScreenSaver" - IDS_TITLE "About" - IDS_TEXT "No options need to be set." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/es-ES.rc b/reactos/base/applications/screensavers/3dtext/lang/es-ES.rc index 3e4468c579c..aca215e91e5 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/es-ES.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/es-ES.rc @@ -1,6 +1,6 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Configuraciуn del Salvapantallas Texto en 3D" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -8,12 +8,10 @@ BEGIN DEFPUSHBUTTON "Aceptar",IDOK,216,7,50,14 PUSHBUTTON "Cancelar",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Texto personalizado",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Texto personalizado",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Salvapantallas Texto en 3D" - IDS_TITLE "Acerca de.." - IDS_TEXT "Ninguna opciуn necesita ser configurada." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/fr-FR.rc b/reactos/base/applications/screensavers/3dtext/lang/fr-FR.rc index 98fb0c7d096..0bcad9b455d 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/fr-FR.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/fr-FR.rc @@ -1,6 +1,6 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Paramиtres de l'йcran de veille Texte 3D" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -8,12 +8,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Annuler",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Texte personnalisй",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Texte personnalisй",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Йcran de veille Texte 3D" - IDS_TITLE "А propos de" - IDS_TEXT "Il n'y a aucune option а dйfinir." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/it-IT.rc b/reactos/base/applications/screensavers/3dtext/lang/it-IT.rc index b0be8dbf08d..c3bc0562f64 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/it-IT.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/it-IT.rc @@ -1,6 +1,6 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Impostazioni del salvaschermo 'Testo 3D'" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -8,12 +8,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Annulla",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Testo personalizzato",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Testo personalizzato",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Salvaschermo 'Testo 3D'" - IDS_TITLE "Informazioni" - IDS_TEXT "Nessuna impostazione da effettuare." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/lt-LT.rc b/reactos/base/applications/screensavers/3dtext/lang/lt-LT.rc index a3ea2e67284..fe77cbd4e3a 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/lt-LT.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/lt-LT.rc @@ -9,7 +9,7 @@ LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT -IDD_CONFIG DIALOGEX 0, 0, 136, 58 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 136, 58 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Ekrano uюsklandos nustatymai" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -17,12 +17,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,14,38,50,14 PUSHBUTTON "Atрaukti",IDCANCEL,72,38,50,14 EDITTEXT IDC_MESSAGE_TEXT,6,18,122,14,ES_AUTOHSCROLL - LTEXT "Pasirinktas tekstas",IDC_STATIC_TEXT,7,7,65,8 + LTEXT "Pasirinktas tekstas",IDC_STATIC,7,7,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "3D tekstas" - IDS_TITLE "Apie" - IDS_TEXT "Nлra keiиiamш parametrш." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/pl-PL.rc b/reactos/base/applications/screensavers/3dtext/lang/pl-PL.rc index bb0063d2d89..bd844fc5dea 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/pl-PL.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/pl-PL.rc @@ -7,7 +7,7 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "3D Text Screensaver Settings" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -15,12 +15,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Anuluj",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Wіasny tekst",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Wіasny tekst",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Wygaszacz ekranu Tekst 3d" - IDS_TITLE "O programie" - IDS_TEXT "Brak opcji." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/ru-RU.rc b/reactos/base/applications/screensavers/3dtext/lang/ru-RU.rc index 00218e70fbc..5e4d60b51cd 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/ru-RU.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/ru-RU.rc @@ -1,6 +1,6 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Параметры заставки" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -8,12 +8,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Отмена",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Другой текст",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Другой текст",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Заставка 3D-текст" - IDS_TITLE "О программе" - IDS_TEXT "Эта заставка не имеет настраиваемых параметров." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/sk-SK.rc b/reactos/base/applications/screensavers/3dtext/lang/sk-SK.rc index 27e96e2577d..f21512684b5 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/sk-SK.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/sk-SK.rc @@ -4,7 +4,7 @@ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Nastavenie љetriиa obrazovky 3D text" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -12,12 +12,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Zruљiќ",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "јubovoѕnэ text",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "јubovoѕnэ text",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "3D text - љetriи obrazovky" - IDS_TITLE "Иo je ..." - IDS_TEXT "Nie sъ potrebnй ћiadne nastavenia." END diff --git a/reactos/base/applications/screensavers/3dtext/lang/uk-UA.rc b/reactos/base/applications/screensavers/3dtext/lang/uk-UA.rc index 06ede41296f..612e5a232cb 100644 --- a/reactos/base/applications/screensavers/3dtext/lang/uk-UA.rc +++ b/reactos/base/applications/screensavers/3dtext/lang/uk-UA.rc @@ -8,7 +8,7 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT -IDD_CONFIG DIALOGEX 0, 0, 273, 178 +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 273, 178 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Параметры заставки ""Об'ємний текст""" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -16,12 +16,10 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,216,7,50,14 PUSHBUTTON "Скасувати",IDCANCEL,216,24,50,14 EDITTEXT IDC_MESSAGE_TEXT,18,28,122,14,ES_AUTOHSCROLL - LTEXT "Текст",IDC_STATIC_TEXT,18,17,65,8 + LTEXT "Текст",IDC_STATIC,18,17,65,8 END STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Заставка ""Об'ємний текст""" - IDS_TITLE "Про" - IDS_TEXT "Ця заставка не має налаштовуваних параметрів." END diff --git a/reactos/base/applications/screensavers/3dtext/resource.h b/reactos/base/applications/screensavers/3dtext/resource.h index 4538c2aee92..61e79f8f4a8 100644 --- a/reactos/base/applications/screensavers/3dtext/resource.h +++ b/reactos/base/applications/screensavers/3dtext/resource.h @@ -1,23 +1,2 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by en-US.rc -// -#define IDD_CONFIG 9 -#define IDD_DIALOG1 101 -#define IDC_MESSAGE_TEXT 1001 -#define IDC_STATIC_TEXT 1002 - -#define IDS_DESCRIPTION 1 -#define IDS_TITLE 2 -#define IDS_TEXT 3 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1003 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif +#define IDC_STATIC -1 +#define IDC_MESSAGE_TEXT 1001 diff --git a/reactos/base/applications/screensavers/3dtext/rsrc.rc b/reactos/base/applications/screensavers/3dtext/rsrc.rc index 1470b1bca50..c14d37befaf 100644 --- a/reactos/base/applications/screensavers/3dtext/rsrc.rc +++ b/reactos/base/applications/screensavers/3dtext/rsrc.rc @@ -1,13 +1,13 @@ #include +#include #include "resource.h" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #define REACTOS_VERSION_DLL #define REACTOS_STR_FILE_DESCRIPTION "OpenGL 3DText ScreenSaver\0" -#define REACTOS_STR_INTERNAL_NAME "ss3dtext\0" -#define REACTOS_STR_ORIGINAL_FILENAME "ss3dtext.scr\0" - +#define REACTOS_STR_INTERNAL_NAME "3dtext\0" +#define REACTOS_STR_ORIGINAL_FILENAME "3dtext.scr\0" #include #include "lang/bg-BG.rc" @@ -19,6 +19,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #include "lang/it-IT.rc" #include "lang/lt-LT.rc" #include "lang/pl-PL.rc" +#include "lang/ru-RU.rc" #include "lang/sk-SK.rc" #include "lang/uk-UA.rc" -#include "lang/ru-RU.rc" diff --git a/reactos/include/psdk/scrnsave.h b/reactos/include/psdk/scrnsave.h index 5cee4b66e71..fa9708d6514 100644 --- a/reactos/include/psdk/scrnsave.h +++ b/reactos/include/psdk/scrnsave.h @@ -1,78 +1,70 @@ /* - Screen saver library by Anders Norlander - - This library is (hopefully) compatible with Microsoft's - screen saver library. - - This is public domain software. - + * PROJECT: ReactOS Screen Saver Library + * LICENSE: GPL v2 or any later version + * FILE: include/psdk/scrnsave.h + * PURPOSE: Header file for the library + * PROGRAMMERS: Anders Norlander + * Colin Finck */ + #ifndef _SCRNSAVE_H #define _SCRNSAVE_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif #ifdef __cplusplus extern "C" { #endif -/* configure dialog identifier */ -#define DLG_SCRNSAVECONFIGURE 2003 +#define idsIsPassword 1000 +#define idsIniFile 1001 +#define idsScreenSaver 1002 +#define idsPassword 1003 +#define idsDifferentPW 1004 +#define idsChangePW 1005 +#define idsBadOldPW 1006 +#define idsAppName 1007 +#define idsNoHelpMemory 1008 +#define idsHelpFile 1009 +#define idsDefKeyword 1010 -#define idsIsPassword 1000 -#define idsIniFile 1001 -#define idsScreenSaver 1002 -#define idsPassword 1003 -#define idsDifferentPW 1004 -#define idsChangePW 1005 -#define idsBadOldPW 1006 -#define idsAppName 1007 -#define idsNoHelpMemory 1008 -#define idsHelpFile 1009 -#define idsDefKeyword 1010 +// If you add a configuration dialog for your screen saver, it must have this dialog ID. +#define DLG_SCRNSAVECONFIGURE 2003 -#define IDS_DESCRIPTION 1 -#define ID_APP 100 +#define IDS_DESCRIPTION 1 +#define ID_APP 100 -#define WS_GT (WS_GROUP | WS_TABSTOP) -#define SCRM_VERIFYPW WM_APP -#define MAXFILELEN 13 -#define TITLEBARNAMELEN 40 -#define APPNAMEBUFFERLEN 40 -#define BUFFLEN 255 +#define WS_GT (WS_GROUP | WS_TABSTOP) +#define MAXFILELEN 13 +#define TITLEBARNAMELEN 40 +#define APPNAMEBUFFERLEN 40 +#define BUFFLEN 255 -#ifndef RC_INVOKED +// The dialog procedure of the screen saver configure dialog (if any) +// If you don't have a configuration dialog, just implement a procedure that always returns FALSE. +BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -/* functions provided by the aothor of the screen saver */ -BOOL WINAPI ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM); -BOOL WINAPI RegisterDialogClasses(HANDLE); -LONG WINAPI ScreenSaverProc(HWND,UINT,WPARAM,LPARAM); +// Use this function if you want to register special classes before opening the configuration dialog. +// Return TRUE here if the classes were registered successfully and the configuration dialog shall be opened. +// If you return FALSE, no configuration dialog will be opened. +BOOL WINAPI RegisterDialogClasses(HANDLE hInst); -/* Change name of function if we are using UNICODE */ -#ifdef UNICODE -#define DefScreenSaverProc DefScreenSaverProcW -#endif +// The screen saver window procedure +LRESULT WINAPI ScreenSaverProc(HWND, UINT uMsg, WPARAM wParam, LPARAM lParam); -/* default screen saver proc; call instead of DefWindowProc */ -LONG WINAPI DefScreenSaverProc(HWND,UINT,WPARAM,LPARAM); +// The window procedure, which handles default tasks for screen savers. +// Use this instead of DefWindowProc. +LRESULT WINAPI DefScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -/* change password */ -void WINAPI ScreenSaverChangePassword(HWND); - -/* globals that may be used by screen saver */ -extern HINSTANCE hMainInstance; -extern HWND hMainWindow; -extern BOOL fChildPreview; -extern TCHAR szName[]; -extern TCHAR szAppName[]; -extern TCHAR szIniFile[]; -extern TCHAR szScreenSaver[]; -extern TCHAR szHelpFile[]; -extern TCHAR szNoHelpMemory[]; -extern UINT MyHelpMessage; - -#endif /* RC_INVOKED */ +// These globals are defined in the screen saver library. +extern HINSTANCE hMainInstance; +extern HWND hMainWindow; +extern BOOL fChildPreview; +extern TCHAR szName[]; +extern TCHAR szAppName[]; +extern TCHAR szIniFile[]; +extern TCHAR szScreenSaver[]; +extern TCHAR szHelpFile[]; +extern TCHAR szNoHelpMemory[]; +extern UINT MyHelpMessage; #ifdef __cplusplus } diff --git a/reactos/lib/sdk/scrnsave/scrnsave.c b/reactos/lib/sdk/scrnsave/scrnsave.c index 66041055fc5..3473f2841b5 100644 --- a/reactos/lib/sdk/scrnsave/scrnsave.c +++ b/reactos/lib/sdk/scrnsave/scrnsave.c @@ -1,21 +1,20 @@ /* - Screen saver library by Anders Norlander - - This library is (hopefully) compatible with Microsoft's - screen saver library. - - This is public domain software. - + * PROJECT: ReactOS Screen Saver Library + * LICENSE: GPL v2 or any later version + * FILE: lib/sdk/scrnsave/scrnsave.c + * PURPOSE: Library for writing screen savers, compatible with MS' scrnsave.lib + * PROGRAMMERS: Anders Norlander + * Colin Finck */ #include +#include #include -#include -/* screen saver window class */ +// Screen Saver window class #define CLASS_SCRNSAVE TEXT("WindowsScreenSaverClass") -/* globals */ +// Globals HWND hMainWindow = NULL; BOOL fChildPreview = FALSE; HINSTANCE hMainInstance; @@ -27,45 +26,21 @@ TCHAR szHelpFile[MAXFILELEN]; TCHAR szNoHelpMemory[BUFFLEN]; UINT MyHelpMessage; -/* local house keeping */ -static HINSTANCE hPwdLib = NULL; +// Local house keeping static POINT pt_orig; -static BOOL checking_pwd = FALSE; -static BOOL closing = FALSE; -static BOOL w95 = FALSE; -typedef BOOL (WINAPI *VERIFYPWDPROC)(HWND); -typedef DWORD (WINAPI *CHPWDPROC)(LPCTSTR, HWND, DWORD, PVOID); -static VERIFYPWDPROC VerifyScreenSavePwd = NULL; - -/* function names */ -#define szVerifyPassword "VerifyScreenSavePwd" - -#ifdef UNICODE -#define szPwdChangePassword "PwdChangePasswordW" -#else -#define szPwdChangePassword "PwdChangePasswordA" -#endif - -static void TerminateScreenSaver(HWND hWnd); -static BOOL RegisterClasses(void); -static LRESULT WINAPI SysScreenSaverProc(HWND,UINT,WPARAM,LPARAM); -static int LaunchScreenSaver(HWND hParent); -static void LaunchConfig(void); - -static int ISSPACE(char c) +static int ISSPACE(TCHAR c) { return (c == ' ' || c == '\t'); } #define ISNUM(c) ((c) >= '0' && c <= '9') -static unsigned long -_toul(const char *s) +static unsigned long _toul(const TCHAR *s) { unsigned long res; unsigned long n; - const char *p; + const TCHAR *p; for (p = s; *p; p++) if (!ISNUM(*p)) @@ -80,138 +55,117 @@ _toul(const char *s) return res; } -/* screen saver entry point */ -int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, - LPSTR CmdLine, int nCmdShow) +// This function takes care of *must* do tasks, like terminating screen saver +static LRESULT WINAPI SysScreenSaverProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { - LPSTR p; - OSVERSIONINFO vi; - - /* initialize */ - hMainInstance = hInst; - - vi.dwOSVersionInfoSize = sizeof(vi); - GetVersionEx(&vi); - /* check if we are going to check for passwords */ - if (vi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) + switch(uMsg) { - HKEY hKey; - /* we are using windows 95 */ - w95 = TRUE; - if (RegOpenKey(HKEY_CURRENT_USER, REGSTR_PATH_SCREENSAVE ,&hKey) == - ERROR_SUCCESS) - { - DWORD check_pwd; - DWORD size = sizeof(DWORD); - DWORD type; - LONG res; + case WM_CREATE: + // Mouse is not supposed to move from this position + GetCursorPos(&pt_orig); + break; - res = RegQueryValueEx(hKey, REGSTR_VALUE_USESCRPASSWORD, - NULL, &type, (PBYTE) &check_pwd, &size); + case WM_DESTROY: + PostQuitMessage(0); + break; - if (check_pwd && res == ERROR_SUCCESS) + case WM_SYSCOMMAND: + if (!fChildPreview) { - hPwdLib = LoadLibrary(TEXT("PASSWORD.CPL")); - if (hPwdLib) - VerifyScreenSavePwd = GetProcAddress(hPwdLib, szVerifyPassword); + switch (wParam) + { + case SC_CLOSE: + case SC_SCREENSAVE: + return FALSE; + } } - - RegCloseKey(hKey); - } + break; } - /* parse arguments */ - for (p = CmdLine; *p; p++) + return ScreenSaverProc(hWnd, uMsg, wParam, lParam); +} + +LRESULT WINAPI DefScreenSaverProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + // Don't do any special processing when in preview mode + if (fChildPreview) + return DefWindowProc(hWnd, uMsg, wParam, lParam); + + switch (uMsg) { - switch (*p) + case WM_NCACTIVATE: + case WM_ACTIVATE: + case WM_ACTIVATEAPP: + if (!wParam) + { + // wParam is FALSE, so the screensaver is losing the focus. + PostMessage(hWnd, WM_CLOSE, 0, 0); + } + break; + + case WM_MOUSEMOVE: { - case 'S': - case 's': - /* start screen saver */ - return LaunchScreenSaver(NULL); - - case 'P': - case 'p': - { - /* start screen saver in preview window */ - HWND hParent; - fChildPreview = TRUE; - - while (ISSPACE(*++p)); - hParent = (HWND) _toul(p); - - if (hParent && IsWindow(hParent)) - return LaunchScreenSaver(hParent); - } - return 0; - - case 'C': - case 'c': - /* display configure dialog */ - LaunchConfig(); - return 0; - - case 'A': - case 'a': - { - /* change screen saver password */ - HWND hParent; - while (ISSPACE(*++p)); - hParent = (HWND) _toul(p); - - if (!hParent || !IsWindow(hParent)) - hParent = GetForegroundWindow(); - - ScreenSaverChangePassword(hParent); - } - return 0; - - case '-': - case '/': - case ' ': - default: + POINT pt; + GetCursorPos(&pt); + if (pt.x == pt_orig.x && pt.y == pt_orig.y) break; + + // Fall through } + + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_KEYDOWN: + case WM_KEYUP: + // Send a WM_CLOSE to close the screen saver (allows the screensaver author to do clean-up tasks) + PostMessage(hWnd, WM_CLOSE, 0, 0); + break; + + case WM_SETCURSOR: + SetCursor(NULL); + return TRUE; } - LaunchConfig(); + return DefWindowProc(hWnd, uMsg, wParam, lParam); +} - return 0; +// Registers the screen saver window class +static BOOL RegisterScreenSaverClass(void) +{ + WNDCLASS cls = {0,}; + + cls.hIcon = LoadIcon(hMainInstance, MAKEINTATOM(ID_APP)); + cls.lpszClassName = CLASS_SCRNSAVE; + cls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); + cls.hInstance = hMainInstance; + cls.style = CS_VREDRAW | CS_HREDRAW | CS_SAVEBITS | CS_PARENTDC; + cls.lpfnWndProc = (WNDPROC)SysScreenSaverProc; + + return RegisterClass(&cls) != 0; } static void LaunchConfig(void) { - /* FIXME: should this be called */ - RegisterDialogClasses(hMainInstance); - - /* display configure dialog */ - DialogBox(hMainInstance, MAKEINTRESOURCE(DLG_SCRNSAVECONFIGURE), - GetForegroundWindow(), (DLGPROC) ScreenSaverConfigureDialog); + // Only show the dialog if the RegisterDialogClasses function succeeded. + // This is the same behaviour as MS' scrnsave.lib. + if( RegisterDialogClasses(hMainInstance) ) + DialogBox(hMainInstance, MAKEINTRESOURCE(DLG_SCRNSAVECONFIGURE), GetForegroundWindow(), (DLGPROC) ScreenSaverConfigureDialog); } static int LaunchScreenSaver(HWND hParent) { - BOOL foo; UINT style; RECT rc; MSG msg; - /* don't allow other tasks to get into the foreground */ - if (w95 && !fChildPreview) - SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, &foo, 0); - - msg.wParam = 0; - - /* register classes, both user defined and classes used by screen saver - library */ - if (!RegisterClasses()) + if (!RegisterScreenSaverClass()) { - MessageBox(NULL, TEXT("RegisterClasses() failed"), NULL, MB_ICONHAND); - goto restore; + MessageBox(NULL, TEXT("RegisterClass() failed"), NULL, MB_ICONHAND); + return 1; } - /* a slightly different approach needs to be used when displaying - in a preview window */ + // A slightly different approach needs to be used when displaying in a preview window if (hParent) { style = WS_CHILD; @@ -225,213 +179,71 @@ static int LaunchScreenSaver(HWND hParent) style |= WS_VISIBLE; } - /* create main screen saver window */ + // Create the main screen saver window hMainWindow = CreateWindowEx(hParent ? 0 : WS_EX_TOPMOST, CLASS_SCRNSAVE, TEXT("SCREENSAVER"), style, 0, 0, rc.right, rc.bottom, hParent, NULL, hMainInstance, NULL); - /* display window and start pumping messages */ + // Display window and start pumping messages if (hMainWindow) { - UpdateWindow(hMainWindow); ShowWindow(hMainWindow, SW_SHOW); - while (GetMessage(&msg, NULL, 0, 0) == TRUE) - { - TranslateMessage(&msg); + while (GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg); - } } -restore: - /* restore system */ - if (w95 && !fChildPreview) - SystemParametersInfo(SPI_SCREENSAVERRUNNING, FALSE, &foo, 0); - - FreeLibrary(hPwdLib); return msg.wParam; } -/* this function takes care of *must* do tasks, like terminating - screen saver */ -static LRESULT WINAPI SysScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +// Screen Saver entry point +int APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR CmdLine, int nCmdShow) { - switch (msg) + LPTSTR p; + + hMainInstance = hInst; + + // Parse the arguments + for (p = CmdLine; *p; p++) { - case WM_CREATE: - if (!fChildPreview) - SetCursor(NULL); - /* mouse is not supposed to move from this position */ - GetCursorPos(&pt_orig); - break; + switch (*p) + { + case 'S': + case 's': + // Start the screen saver + return LaunchScreenSaver(NULL); - case WM_DESTROY: - PostQuitMessage(0); - break; - - case WM_TIMER: - if (closing) - return 0; - break; - - case WM_PAINT: - if (closing) - return DefWindowProc(hWnd, msg, wParam, lParam); - break; - - case WM_SYSCOMMAND: - if (!fChildPreview) + case 'P': + case 'p': { - switch (wParam) - { - case SC_CLOSE: - case SC_SCREENSAVE: - case SC_NEXTWINDOW: - case SC_PREVWINDOW: - return FALSE; - } + // Start the screen saver in preview mode + HWND hParent; + fChildPreview = TRUE; + + while (ISSPACE(*++p)); + hParent = (HWND) _toul(p); + + if (hParent && IsWindow(hParent)) + return LaunchScreenSaver(hParent); } - break; - - case WM_MOUSEMOVE: - case WM_LBUTTONDOWN: - case WM_RBUTTONDOWN: - case WM_MBUTTONDOWN: - case WM_KEYDOWN: - case WM_SYSKEYDOWN: - case WM_NCACTIVATE: - case WM_ACTIVATE: - case WM_ACTIVATEAPP: - if (closing) - return DefWindowProc(hWnd, msg, wParam, lParam); - - break; - } - - return ScreenSaverProc(hWnd, msg, wParam, lParam); -} - -LONG WINAPI DefScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - /* don't do any special processing when in preview mode */ - if (fChildPreview || closing) - return DefWindowProc(hWnd, msg, wParam, lParam); - - switch (msg) - { - case WM_CLOSE: - TerminateScreenSaver(hWnd); - /* do NOT pass this to DefWindowProc; it will terminate even if - an invalid password was given. - */ return 0; - case SCRM_VERIFYPW: - /* verify password or return TRUE if password checking is turned off */ - if (VerifyScreenSavePwd) - return VerifyScreenSavePwd(hWnd); - else - return TRUE; + case 'C': + case 'c': + // Display the configuration dialog + LaunchConfig(); + return 0; - case WM_SETCURSOR: - if (checking_pwd) - break; - SetCursor(NULL); - return TRUE; - - case WM_NCACTIVATE: - case WM_ACTIVATE: - case WM_ACTIVATEAPP: - if (wParam != FALSE) - break; - - case WM_MOUSEMOVE: - { - POINT pt; - GetCursorPos(&pt); - if (pt.x == pt_orig.x && pt.y == pt_orig.y) + case '-': + case '/': + case ' ': + default: break; } - - case WM_LBUTTONDOWN: - case WM_RBUTTONDOWN: - case WM_MBUTTONDOWN: - case WM_KEYDOWN: - case WM_SYSKEYDOWN: - /* try to terminate screen saver */ - if (!checking_pwd) - PostMessage(hWnd, WM_CLOSE, 0, 0); - break; } - return DefWindowProc(hWnd, msg, wParam, lParam); -} - -static void TerminateScreenSaver(HWND hWnd) -{ - /* don't allow recursion */ - if (checking_pwd || closing) - return; - - /* verify password */ - if (VerifyScreenSavePwd) - { - checking_pwd = TRUE; - closing = SendMessage(hWnd, SCRM_VERIFYPW, 0, 0); - checking_pwd = FALSE; - } - else - closing = TRUE; - - /* are we closing? */ - if (closing) - { - DestroyWindow(hWnd); - } - else - GetCursorPos(&pt_orig); /* if not: get new mouse position */ -} - -/* - Register screen saver window class and call user - supplied hook. - */ -static BOOL RegisterClasses(void) -{ - WNDCLASS cls; - ZeroMemory(&cls, sizeof(cls)); - cls.hCursor = NULL; - cls.hIcon = LoadIcon(hMainInstance, MAKEINTATOM(ID_APP)); - cls.lpszMenuName = NULL; - cls.lpszClassName = CLASS_SCRNSAVE; - cls.hbrBackground = NULL; //(HBRUSH)GetStockObject(BLACK_BRUSH); - cls.hInstance = hMainInstance; - cls.style = CS_VREDRAW | CS_HREDRAW | CS_SAVEBITS | CS_PARENTDC; - cls.lpfnWndProc = (WNDPROC) SysScreenSaverProc; - cls.cbWndExtra = 0; - cls.cbClsExtra = 0; - - if (!RegisterClass(&cls)) - return FALSE; - - return RegisterDialogClasses(hMainInstance); -} - -void WINAPI ScreenSaverChangePassword(HWND hParent) -{ - /* load Master Password Router (MPR) */ - HINSTANCE hMpr = LoadLibrary(TEXT("MPR.DLL")); - - if (hMpr) - { - CHPWDPROC ChangePassword; - ChangePassword = (CHPWDPROC) GetProcAddress(hMpr, szPwdChangePassword); - - /* change password for screen saver provider */ - if (ChangePassword) - ChangePassword(TEXT("SCRSAVE"), hParent, 0, NULL); - - FreeLibrary(hMpr); - } + LaunchConfig(); + + return 0; } diff --git a/reactos/lib/sdk/scrnsave/scrnsave.rbuild b/reactos/lib/sdk/scrnsave/scrnsave.rbuild index ad1c9553599..503f9f26c82 100644 --- a/reactos/lib/sdk/scrnsave/scrnsave.rbuild +++ b/reactos/lib/sdk/scrnsave/scrnsave.rbuild @@ -1,7 +1,7 @@ - - scrnsave.c - + + scrnsave.c + \ No newline at end of file diff --git a/rosapps/applications/screensavers/blankscr/blankscr.rbuild b/rosapps/applications/screensavers/blankscr/blankscr.rbuild index 871e02a9808..c6960894245 100644 --- a/rosapps/applications/screensavers/blankscr/blankscr.rbuild +++ b/rosapps/applications/screensavers/blankscr/blankscr.rbuild @@ -1,15 +1,11 @@ - + scrnsave kernel32 user32 gdi32 - opengl32 - glu32 - advapi32 - shell32 scrnsave.c scrnsave.rc diff --git a/rosapps/applications/screensavers/blankscr/lang/bg-BG.rc b/rosapps/applications/screensavers/blankscr/lang/bg-BG.rc index b0290911b92..b9648b30342 100644 --- a/rosapps/applications/screensavers/blankscr/lang/bg-BG.rc +++ b/rosapps/applications/screensavers/blankscr/lang/bg-BG.rc @@ -3,6 +3,5 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Blank" - IDS_TITLE "За" IDS_TEXT "Няма възможност за настройки." END diff --git a/rosapps/applications/screensavers/blankscr/lang/de-DE.rc b/rosapps/applications/screensavers/blankscr/lang/de-DE.rc index 50a303ccb02..0e2fad4a6d9 100644 --- a/rosapps/applications/screensavers/blankscr/lang/de-DE.rc +++ b/rosapps/applications/screensavers/blankscr/lang/de-DE.rc @@ -2,7 +2,6 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE BEGIN - IDS_DESCRIPTION "Blank" - IDS_TITLE "Ьber" + IDS_DESCRIPTION "Schwarzer Bildschirm" IDS_TEXT "Keinerlei Einstellungen notwendig." END diff --git a/rosapps/applications/screensavers/blankscr/lang/en-US.rc b/rosapps/applications/screensavers/blankscr/lang/en-US.rc index fe55de153a8..078bac53e8c 100644 --- a/rosapps/applications/screensavers/blankscr/lang/en-US.rc +++ b/rosapps/applications/screensavers/blankscr/lang/en-US.rc @@ -2,7 +2,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US STRINGTABLE DISCARDABLE BEGIN - IDS_DESCRIPTION "Blank" - IDS_TITLE "About" + IDS_DESCRIPTION "Blank screen" IDS_TEXT "No options need to be set." END diff --git a/rosapps/applications/screensavers/blankscr/lang/es-ES.rc b/rosapps/applications/screensavers/blankscr/lang/es-ES.rc index 0f3784e8802..e8709e175ca 100644 --- a/rosapps/applications/screensavers/blankscr/lang/es-ES.rc +++ b/rosapps/applications/screensavers/blankscr/lang/es-ES.rc @@ -3,6 +3,5 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "En blanco" - IDS_TITLE "Acerca de" IDS_TEXT "Ninguna opciуn necesita ser configurada." END diff --git a/rosapps/applications/screensavers/blankscr/lang/fr-FR.rc b/rosapps/applications/screensavers/blankscr/lang/fr-FR.rc index 3104e8f6245..f31c3e69f07 100644 --- a/rosapps/applications/screensavers/blankscr/lang/fr-FR.rc +++ b/rosapps/applications/screensavers/blankscr/lang/fr-FR.rc @@ -3,6 +3,5 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Vide" - IDS_TITLE "А propos de" IDS_TEXT "Il n'y a aucune option а dйfinir." END diff --git a/rosapps/applications/screensavers/blankscr/lang/lt-LT.rc b/rosapps/applications/screensavers/blankscr/lang/lt-LT.rc index 50807e68cfd..145fd744930 100644 --- a/rosapps/applications/screensavers/blankscr/lang/lt-LT.rc +++ b/rosapps/applications/screensavers/blankscr/lang/lt-LT.rc @@ -12,6 +12,5 @@ LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Tuриias" - IDS_TITLE "Apie" IDS_TEXT "Nлra keiиiamш parametrш." END diff --git a/rosapps/applications/screensavers/blankscr/lang/nl-NL.rc b/rosapps/applications/screensavers/blankscr/lang/nl-NL.rc index a1a7cf5c265..90dbfcdce65 100644 --- a/rosapps/applications/screensavers/blankscr/lang/nl-NL.rc +++ b/rosapps/applications/screensavers/blankscr/lang/nl-NL.rc @@ -3,6 +3,5 @@ LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Blank" - IDS_TITLE "Informatie" IDS_TEXT "Geen dingen om in te stellen." END diff --git a/rosapps/applications/screensavers/blankscr/lang/pl-PL.rc b/rosapps/applications/screensavers/blankscr/lang/pl-PL.rc index 9916aab2c82..5a4e19d27f6 100644 --- a/rosapps/applications/screensavers/blankscr/lang/pl-PL.rc +++ b/rosapps/applications/screensavers/blankscr/lang/pl-PL.rc @@ -10,6 +10,5 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Puste" - IDS_TITLE "O programie" IDS_TEXT "Brak opcji do ustawiania." END diff --git a/rosapps/applications/screensavers/blankscr/lang/sk-SK.rc b/rosapps/applications/screensavers/blankscr/lang/sk-SK.rc index 9fdeb936603..e8358888ea0 100644 --- a/rosapps/applications/screensavers/blankscr/lang/sk-SK.rc +++ b/rosapps/applications/screensavers/blankscr/lang/sk-SK.rc @@ -7,6 +7,5 @@ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Blank" - IDS_TITLE "Иo je ..." IDS_TEXT "Nie sъ potrebnй ћiadne nastavenia." END diff --git a/rosapps/applications/screensavers/blankscr/lang/uk-UA.rc b/rosapps/applications/screensavers/blankscr/lang/uk-UA.rc index 81194f0cf84..9521c85fb1a 100644 --- a/rosapps/applications/screensavers/blankscr/lang/uk-UA.rc +++ b/rosapps/applications/screensavers/blankscr/lang/uk-UA.rc @@ -11,6 +11,5 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT STRINGTABLE DISCARDABLE BEGIN IDS_DESCRIPTION "Порожньо" - IDS_TITLE "Про" IDS_TEXT "Ця заставка не має налаштовуваних параметрів." END diff --git a/rosapps/applications/screensavers/blankscr/resource.h b/rosapps/applications/screensavers/blankscr/resource.h index d19735775c6..ff0dc9e4319 100644 --- a/rosapps/applications/screensavers/blankscr/resource.h +++ b/rosapps/applications/screensavers/blankscr/resource.h @@ -1,4 +1 @@ - -#define IDS_DESCRIPTION 1 -#define IDS_TITLE 2 #define IDS_TEXT 3 diff --git a/rosapps/applications/screensavers/blankscr/scrnsave.c b/rosapps/applications/screensavers/blankscr/scrnsave.c index 360d3996fa4..833db8636e1 100644 --- a/rosapps/applications/screensavers/blankscr/scrnsave.c +++ b/rosapps/applications/screensavers/blankscr/scrnsave.c @@ -21,38 +21,27 @@ #include #include "resource.h" -LRESULT WINAPI ScreenSaverProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - static HDC hdc; - static RECT rc; - - switch(message) - { - case WM_CREATE: - break; - case WM_DESTROY: - PostQuitMessage(0); - break; - case WM_ERASEBKGND: - hdc = GetDC(hwnd); - GetClientRect (hwnd, &rc); - FillRect (hdc, &rc, GetStockObject(BLACK_BRUSH)); - ReleaseDC(hwnd,hdc); - break; - case WM_PAINT: - break; - default: - return DefScreenSaverProc(hwnd, message, wParam, lParam); - } - return 0; +LRESULT WINAPI ScreenSaverProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + return DefScreenSaverProc(hwnd, uMsg, wParam, lParam); } -BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { return FALSE; } +// 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) { - return TRUE; + TCHAR szMessage[256]; + TCHAR szTitle[25]; + + LoadString(hInst, IDS_TEXT, szMessage, sizeof(szMessage) / sizeof(TCHAR)); + LoadString(hInst, IDS_DESCRIPTION, szTitle, sizeof(szTitle) / sizeof(TCHAR)); + + MessageBox(NULL, szMessage, szTitle, MB_OK | MB_ICONEXCLAMATION); + + return FALSE; } diff --git a/rosapps/applications/screensavers/blankscr/scrnsave.def b/rosapps/applications/screensavers/blankscr/scrnsave.def index 2b3cb880531..ff549fee676 100644 --- a/rosapps/applications/screensavers/blankscr/scrnsave.def +++ b/rosapps/applications/screensavers/blankscr/scrnsave.def @@ -1,7 +1,5 @@ NAME blankscr.SCR -DESCRIPTION 'Blank screen saver' - EXPORTS ScreenSaverProc ScreenSaverConfigureDialog diff --git a/rosapps/applications/screensavers/blankscr/scrnsave.rc b/rosapps/applications/screensavers/blankscr/scrnsave.rc index db712a01513..8e18421df1c 100644 --- a/rosapps/applications/screensavers/blankscr/scrnsave.rc +++ b/rosapps/applications/screensavers/blankscr/scrnsave.rc @@ -1,4 +1,5 @@ #include +#include #include "resource.h" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL @@ -7,7 +8,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #define REACTOS_STR_FILE_DESCRIPTION "ReactOS Default ScreenSaver\0" #define REACTOS_STR_INTERNAL_NAME "scrnsave\0" #define REACTOS_STR_ORIGINAL_FILENAME "scrnsave.scr\0" - #include #include "lang/bg-BG.rc"