- Remove much Win9x-specific stuff from the scrnsave library and make it more compatible to the MS version of the library

- Change the 3dtext screensaver to use the library
- Reduce the amount of code in the blankscr screensaver to a minimum
- Remove unneeded resources from both screensavers
- Indentation fixes, MSVC build and warning fixes, small translation fixes, etc. for both screensavers and the library

See issue #2966 for more details.

svn path=/trunk/; revision=32437
This commit is contained in:
Colin Finck 2008-02-20 21:43:41 +00:00
parent 793ebfdd18
commit cfe2ae5fcf
35 changed files with 311 additions and 731 deletions

View file

@ -19,6 +19,7 @@
*/
#include <windows.h>
#include <scrnsave.h>
#include <math.h>
#include <GL/gl.h>
#include <GL/glu.h>
@ -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 <hwnd> (set password)
// -s (screensave)
// -p <hwnd> (preview)
// -c <hwnd> (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;
}

View file

@ -0,0 +1,5 @@
NAME 3dtext.scr
EXPORTS
ScreenSaverProc
ScreenSaverConfigureDialog

View file

@ -1,7 +1,8 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
<module name="3dtext" type="win32scr" installbase="system32" installname="3dtext.scr" unicode="true">
<define name="__USE_W32API" />
<module name="3dtext" type="win32scr" installbase="system32" installname="3dtext.scr" unicode="yes">
<importlibrary definition="3dtext.def" />
<library>scrnsave</library>
<library>kernel32</library>
<library>user32</library>
<library>gdi32</library>

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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<C5A1>",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

View file

@ -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

View file

@ -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

View file

@ -1,13 +1,13 @@
#include <windows.h>
#include <scrnsave.h>
#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 <reactos/version.rc>
#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"

View file

@ -1,78 +1,70 @@
/*
Screen saver library by Anders Norlander <anorland@hem2.passagen.se>
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 <anorland@hem2.passagen.se>
* Colin Finck <mail@colinfinck.de>
*/
#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
}

View file

@ -1,21 +1,20 @@
/*
Screen saver library by Anders Norlander <anorland@hem2.passagen.se>
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 <anorland@hem2.passagen.se>
* Colin Finck <mail@colinfinck.de>
*/
#include <windows.h>
#include <tchar.h>
#include <scrnsave.h>
#include <regstr.h>
/* 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;
}

View file

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
<group>
<module name="scrnsave" type="staticlibrary">
<file>scrnsave.c</file>
</module>
<module name="scrnsave" type="staticlibrary" unicode="yes">
<file>scrnsave.c</file>
</module>
</group>

View file

@ -1,15 +1,11 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
<module name="blankscr" type="win32scr" installbase="system32" installname="scrnsave.scr">
<module name="blankscr" type="win32scr" installbase="system32" installname="scrnsave.scr" unicode="yes">
<importlibrary definition="scrnsave.def" />
<library>scrnsave</library>
<library>kernel32</library>
<library>user32</library>
<library>gdi32</library>
<library>opengl32</library>
<library>glu32</library>
<library>advapi32</library>
<library>shell32</library>
<file>scrnsave.c</file>
<file>scrnsave.rc</file>

View file

@ -3,6 +3,5 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Blank"
IDS_TITLE "Çà"
IDS_TEXT "Íÿìà âúçìîæíîñò çà íàñòðîéêè."
END

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -11,6 +11,5 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_DESCRIPTION "Ïîðîæíüî"
IDS_TITLE "Ïðî"
IDS_TEXT "Öÿ çàñòàâêà íå ìຠíàëàøòîâóâàíèõ ïàðàìåòð³â."
END

View file

@ -1,4 +1 @@
#define IDS_DESCRIPTION 1
#define IDS_TITLE 2
#define IDS_TEXT 3

View file

@ -21,38 +21,27 @@
#include <scrnsave.h>
#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;
}

View file

@ -1,7 +1,5 @@
NAME blankscr.SCR
DESCRIPTION 'Blank screen saver'
EXPORTS
ScreenSaverProc
ScreenSaverConfigureDialog

View file

@ -1,4 +1,5 @@
#include <windows.h>
#include <scrnsave.h>
#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 <reactos/version.rc>
#include "lang/bg-BG.rc"