- Remove some global variables.

- Clean up the source code.
- Display the names of the screen savers.
- Sort the screen saver list by the screen saver names.
- Disable setting controls when 'None' screen saver is selected.

svn path=/trunk/; revision=24789
This commit is contained in:
Eric Kohl 2006-11-19 21:06:30 +00:00
parent a919bba10c
commit b49d1db6bf
15 changed files with 213 additions and 168 deletions

View file

@ -31,7 +31,7 @@ BEGIN
LTEXT "Liste des écrans de veille:",IDC_STATIC,13, 24, 150, 9 LTEXT "Liste des écrans de veille:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "Paramè&tres...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "Paramè&tres...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "&Aperçu",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "&Aperçu",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -25,7 +25,7 @@ BEGIN
LTEXT "Screen saver installati:",IDC_STATIC,13, 24, 150, 9 LTEXT "Screen saver installati:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Impostazioni",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Impostazioni",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "&Prova",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "&Prova",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -29,7 +29,7 @@ BEGIN
LTEXT "スクリーン セーバーの一覧:",IDC_STATIC,13, 24, 150, 9 LTEXT "スクリーン セーバーの一覧:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "設定(&T)...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "設定(&T)...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "プレビュー(&V)",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "プレビュー(&V)",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -28,7 +28,7 @@ BEGIN
LTEXT "Ñïèñîê çàñòàâîê:",IDC_STATIC,13,24,150,9 LTEXT "Ñïèñîê çàñòàâîê:",IDC_STATIC,13,24,150,9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_NOCOLUMNHEADER | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_NOCOLUMNHEADER |
WS_BORDER | WS_TABSTOP,13,34,170,69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13,34,170,69
PUSHBUTTON "&Íàñòðîéêà...",IDC_SCREENS_SETTINGS,188,34,50,15, PUSHBUTTON "&Íàñòðîéêà...",IDC_SCREENS_SETTINGS,188,34,50,15,
WS_GROUP WS_GROUP
PUSHBUTTON "Ïðî&ñìîòð",IDC_SCREENS_TESTSC,188,52,50,15 PUSHBUTTON "Ïðî&ñìîòð",IDC_SCREENS_TESTSC,188,52,50,15

View file

@ -33,7 +33,7 @@ BEGIN
LTEXT "Ñïèñîê çáåð³ãà÷³â åêðàíà:",IDC_STATIC,13, 24, 150, 9 LTEXT "Ñïèñîê çáåð³ãà÷³â åêðàíà:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Íàñòðîéêè",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Íàñòðîéêè",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "Ïåðå&ãëÿä",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "Ïåðå&ãëÿä",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -29,7 +29,7 @@ BEGIN
LTEXT "Seznam spoøièù:",IDC_STATIC,13, 24, 150, 9 LTEXT "Seznam spoøièù:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Nastavení...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Nastavení...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "&Ukázka",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "&Ukázka",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -25,7 +25,7 @@ BEGIN
LTEXT "Installierte Bildschrimschoner:",IDC_STATIC,13, 24, 150, 9 LTEXT "Installierte Bildschrimschoner:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Einstellungen",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Einstellungen",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "&Vorschau",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "&Vorschau",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -25,7 +25,7 @@ BEGIN
LTEXT "Installed screensavers:",IDC_STATIC,13, 24, 150, 9 LTEXT "Installed screensavers:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "Se&ttings",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "Se&ttings",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "Pre&view",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "Pre&view",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -36,7 +36,7 @@ BEGIN
LTEXT "Lista de protectores de pantalla:",IDC_STATIC,13, 24, 150, 9 LTEXT "Lista de protectores de pantalla:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "Configuración...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "Configuración...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "&Vista previa",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "&Vista previa",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -29,7 +29,7 @@ BEGIN
LTEXT "Ëßóôá ðñïöõëÜîåùí ïèüíçò:",IDC_STATIC,13, 24, 150, 9 LTEXT "Ëßóôá ðñïöõëÜîåùí ïèüíçò:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "Åðéëï&ãÝò...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "Åðéëï&ãÝò...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "Ðñï&âïëÞ",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "Ðñï&âïëÞ",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -23,8 +23,9 @@ BEGIN
GROUPBOX "&Képernyõvédõ",IDC_SCREENS_DUMMY, 5, 7, 238, 136 GROUPBOX "&Képernyõvédõ",IDC_SCREENS_DUMMY, 5, 7, 238, 136
LTEXT "Képernyõvédõk listája:",IDC_STATIC,13, 24, 150, 9 LTEXT "Képernyõvédõk listája:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Beállítások...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Beállítások...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "E&lõzetes nézet",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "E&lõzetes nézet",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -29,7 +29,7 @@ BEGIN
LTEXT "Lijst van de schermbeveiligingen:",IDC_STATIC,13, 24, 150, 9 LTEXT "Lijst van de schermbeveiligingen:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Instellingen...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Instellingen...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "V&oorbeeld",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "V&oorbeeld",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -30,7 +30,7 @@ BEGIN
LTEXT "Lista wygaszaczy ekranu:",IDC_STATIC,13, 24, 150, 9 LTEXT "Lista wygaszaczy ekranu:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Ustawienia...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Ustawienia...",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "&Podgl¹d",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "&Podgl¹d",IDC_SCREENS_TESTSC,188, 52, 50, 15

View file

@ -9,65 +9,51 @@
*/ */
#include "desk.h" #include "desk.h"
void SetScreenSaver();
#define MAX_SCREENSAVERS 100 #define MAX_SCREENSAVERS 100
void AddListViewItems2(); static VOID SetScreenSaver(VOID);
void CheckRegScreenSaverIsSecure(); static VOID AddListViewItems(HWND);
static VOID CheckRegScreenSaverIsSecure(HWND);
typedef struct { typedef struct
{
BOOL bIsScreenSaver; /* Is this background a wallpaper */ BOOL bIsScreenSaver; /* Is this background a wallpaper */
TCHAR szFilename[MAX_PATH]; TCHAR szFilename[MAX_PATH];
TCHAR szDisplayName[256]; TCHAR szDisplayName[256];
} ScreenSaverItem; } ScreenSaverItem;
int ImageListSelection = 0; int ImageListSelection = -1;
ScreenSaverItem g_ScreenSaverItems[MAX_SCREENSAVERS]; ScreenSaverItem g_ScreenSaverItems[MAX_SCREENSAVERS];
HWND g_hScreenBackgroundPage = NULL;
HWND g_hScreengroundList = NULL;
HWND ControlScreenSaverIsSecure = NULL;
HMENU g_hPopupMenu = NULL; HMENU g_hPopupMenu = NULL;
void ListViewItemAreChanged(int itemIndex) VOID ListViewItemAreChanged(HWND hwndDlg, int itemIndex)
{ {
ScreenSaverItem *ScreenSaverItem = NULL; BOOL bEnable;
LV_ITEM lvItem;
ImageListSelection = itemIndex; lvItem.mask = LVIF_PARAM;
ScreenSaverItem = &g_ScreenSaverItems[ImageListSelection]; lvItem.iItem = itemIndex;
lvItem.iSubItem = 0;
PropSheet_Changed(GetParent(g_hScreenBackgroundPage), g_hScreenBackgroundPage); if (!ListView_GetItem(GetDlgItem(hwndDlg, IDC_SCREENS_CHOICES), &lvItem))
return;
ImageListSelection = lvItem.lParam;
bEnable = (lvItem.lParam != 0);
EnableWindow(GetDlgItem(hwndDlg, IDC_SCREENS_SETTINGS), bEnable);
EnableWindow(GetDlgItem(hwndDlg, IDC_SCREENS_TESTSC), bEnable);
EnableWindow(GetDlgItem(hwndDlg, IDC_SCREENS_USEPASSCHK), bEnable);
EnableWindow(GetDlgItem(hwndDlg, IDC_SCREENS_TIMEDELAY), bEnable);
EnableWindow(GetDlgItem(hwndDlg, IDC_SCREENS_TIME), bEnable);
} }
void VOID
ScreensaverConfig () ScreensaverConfig(HWND hwndDlg)
{
/*
/p:<hwnd> Run in preview
/s Run normal
/c:<hwnd> Run configuration, hwnd is handle of calling window
/a Run change password
*/
WCHAR szCmdline[2048];
STARTUPINFO si;
PROCESS_INFORMATION pi;
swprintf(szCmdline, L"%s /c",g_ScreenSaverItems[ImageListSelection].szFilename);
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi ))
{
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
}
void
ScreensaverPreview ()
{ {
/* /*
/p:<hwnd> Run in preview /p:<hwnd> Run in preview
@ -79,17 +65,68 @@ ScreensaverPreview ()
WCHAR szCmdline[2048]; WCHAR szCmdline[2048];
STARTUPINFO si; STARTUPINFO si;
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
swprintf(szCmdline, L"%s /p",g_ScreenSaverItems[ImageListSelection].szFilename);
if (ImageListSelection < 1)
return;
swprintf(szCmdline, L"%s /c:%u",
g_ScreenSaverItems[ImageListSelection].szFilename,
hwndDlg);
ZeroMemory( &si, sizeof(si) ); ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si); si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); ZeroMemory( &pi, sizeof(pi) );
if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi )) if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
{ {
CloseHandle( pi.hProcess ); CloseHandle( pi.hProcess );
CloseHandle( pi.hThread ); CloseHandle( pi.hThread );
} }
}
VOID
ScreensaverPreview(HWND hwndDlg)
{
/*
/p:<hwnd> Run in preview
/s Run normal
/c:<hwnd> Run configuration, hwnd is handle of calling window
/a Run change password
*/
WCHAR szCmdline[2048];
STARTUPINFO si;
PROCESS_INFORMATION pi;
if (ImageListSelection < 1)
return;
swprintf(szCmdline, L"%s /p", g_ScreenSaverItems[ImageListSelection].szFilename);
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if(CreateProcess( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
{
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
} }
}
VOID
ScreensaverDelete(HWND hwndDlg)
{
SHFILEOPSTRUCT fos;
if (ImageListSelection < 1) // Can NOT delete anything :-)
return;
fos.hwnd = hwndDlg;
fos.wFunc = FO_DELETE;
fos.fFlags = 0;
fos.pFrom = g_ScreenSaverItems[ImageListSelection].szFilename;
SHFileOperationW(&fos);
}
INT_PTR INT_PTR
CALLBACK CALLBACK
@ -98,9 +135,8 @@ ScreenSaverPageProc(HWND hwndDlg,
WPARAM wParam, WPARAM wParam,
LPARAM lParam) LPARAM lParam)
{ {
g_hScreenBackgroundPage = hwndDlg; switch (uMsg)
{
switch(uMsg) {
case WM_DESTROY: case WM_DESTROY:
{ {
DestroyMenu(g_hPopupMenu); DestroyMenu(g_hPopupMenu);
@ -108,14 +144,13 @@ ScreenSaverPageProc(HWND hwndDlg,
} }
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
g_hScreengroundList = GetDlgItem(g_hScreenBackgroundPage, IDC_SCREENS_CHOICES); SendDlgItemMessage(hwndDlg, IDC_SCREENS_TIME, UDM_SETRANGE, 0, MAKELONG ((short) 240, (short) 0));
SendMessage(GetDlgItem(g_hScreenBackgroundPage, IDC_SCREENS_TIME), UDM_SETRANGE, 0, MAKELONG ((short) 240, (short) 0)); AddListViewItems(hwndDlg);
AddListViewItems2();
g_hPopupMenu = LoadMenu(hApplet, MAKEINTRESOURCE(IDR_POPUP_MENU)); g_hPopupMenu = LoadMenu(hApplet, MAKEINTRESOURCE(IDR_POPUP_MENU));
g_hPopupMenu = GetSubMenu(g_hPopupMenu, 0); g_hPopupMenu = GetSubMenu(g_hPopupMenu, 0);
CheckRegScreenSaverIsSecure(); CheckRegScreenSaverIsSecure(hwndDlg);
} break; } break;
case WM_COMMAND: case WM_COMMAND:
@ -126,44 +161,35 @@ ScreenSaverPageProc(HWND hwndDlg,
switch(controlId) { switch(controlId) {
case IDC_SCREENS_POWER_BUTTON: // Start Powercfg.Cpl case IDC_SCREENS_POWER_BUTTON: // Start Powercfg.Cpl
{ {
if(command == BN_CLICKED) if (command == BN_CLICKED)
WinExec("rundll32 shell32.dll,Control_RunDLL powercfg.cpl,,",SW_SHOWNORMAL); WinExec("rundll32 shell32.dll,Control_RunDLL powercfg.cpl,,",SW_SHOWNORMAL);
} break; } break;
case IDC_SCREENS_TESTSC: // Screensaver Preview case IDC_SCREENS_TESTSC: // Screensaver Preview
{ {
if(command == BN_CLICKED) if(command == BN_CLICKED)
ScreensaverPreview(); ScreensaverPreview(hwndDlg);
break; break;
} }
case ID_MENU_PREVIEW: case ID_MENU_PREVIEW:
{ {
ScreensaverPreview(); ScreensaverPreview(hwndDlg);
break; break;
} }
case ID_MENU_CONFIG: case ID_MENU_CONFIG:
{ {
ScreensaverConfig(); ScreensaverConfig(hwndDlg);
break; break;
} }
case ID_MENU_DELETE: // Delete Screensaver case ID_MENU_DELETE: // Delete Screensaver
{ {
LPSHFILEOPSTRUCT fos = NULL;
if(command == BN_CLICKED) { if(command == BN_CLICKED) {
if (ImageListSelection == 0) // Can NOT delete anything :-) ScreensaverDelete(hwndDlg);
return FALSE;
fos->hwnd = hwndDlg;
fos->wFunc = FO_DELETE;
fos->fFlags = 0;
fos->pFrom = g_ScreenSaverItems[ImageListSelection].szFilename;
SHFileOperationW(fos);
} }
} break; } break;
case IDC_SCREENS_SETTINGS: // Screensaver Settings case IDC_SCREENS_SETTINGS: // Screensaver Settings
{ {
if(command == BN_CLICKED) if(command == BN_CLICKED)
ScreensaverConfig(); ScreensaverConfig(hwndDlg);
break; break;
} }
case IDC_SCREENS_USEPASSCHK: // Screensaver Is Secure case IDC_SCREENS_USEPASSCHK: // Screensaver Is Secure
@ -173,7 +199,7 @@ ScreenSaverPageProc(HWND hwndDlg,
} break; } break;
case IDC_SCREENS_TIME: // Delay before show screensaver case IDC_SCREENS_TIME: // Delay before show screensaver
{ {
} break; }
default: default:
break; break;
} break; } break;
@ -184,7 +210,8 @@ ScreenSaverPageProc(HWND hwndDlg,
LPNMITEMACTIVATE nmia = (LPNMITEMACTIVATE) lParam; LPNMITEMACTIVATE nmia = (LPNMITEMACTIVATE) lParam;
RECT rc; RECT rc;
switch(lpnm->code) { switch(lpnm->code)
{
case PSN_APPLY: case PSN_APPLY:
{ {
SetScreenSaver(); SetScreenSaver();
@ -192,7 +219,7 @@ ScreenSaverPageProc(HWND hwndDlg,
} break; } break;
case NM_RCLICK: case NM_RCLICK:
{ {
GetWindowRect(g_hScreengroundList, &rc); GetWindowRect(GetDlgItem(hwndDlg, IDC_SCREENS_CHOICES), &rc);
TrackPopupMenuEx(g_hPopupMenu, TPM_RIGHTBUTTON, TrackPopupMenuEx(g_hPopupMenu, TPM_RIGHTBUTTON,
rc.left + nmia->ptAction.x, rc.top + nmia->ptAction.y, hwndDlg, NULL); rc.left + nmia->ptAction.x, rc.top + nmia->ptAction.y, hwndDlg, NULL);
break; break;
@ -200,11 +227,11 @@ ScreenSaverPageProc(HWND hwndDlg,
case LVN_ITEMCHANGED: case LVN_ITEMCHANGED:
{ {
LPNMLISTVIEW nm = (LPNMLISTVIEW)lParam; LPNMLISTVIEW nm = (LPNMLISTVIEW)lParam;
if((nm->uNewState & LVIS_SELECTED) == 0) if ((nm->uNewState & LVIS_SELECTED) == 0)
return FALSE; return FALSE;
ListViewItemAreChanged(nm->iItem); ListViewItemAreChanged(hwndDlg, nm->iItem);
break; break;
} break; }
default: default:
break; break;
} }
@ -214,7 +241,7 @@ ScreenSaverPageProc(HWND hwndDlg,
return FALSE; return FALSE;
} }
void CheckRegScreenSaverIsSecure() VOID CheckRegScreenSaverIsSecure(HWND hwndDlg)
{ {
HKEY hKey; HKEY hKey;
TCHAR szBuffer[2]; TCHAR szBuffer[2];
@ -222,23 +249,26 @@ void CheckRegScreenSaverIsSecure()
DWORD varType = REG_SZ; DWORD varType = REG_SZ;
LONG result; LONG result;
ControlScreenSaverIsSecure = GetDlgItem(g_hScreenBackgroundPage, IDC_SCREENS_USEPASSCHK);
RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), 0, KEY_ALL_ACCESS, &hKey); RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), 0, KEY_ALL_ACCESS, &hKey);
result = RegQueryValueEx(hKey, TEXT("ScreenSaverIsSecure"), 0, &varType, (LPBYTE)szBuffer, &bufferSize); result = RegQueryValueEx(hKey, TEXT("ScreenSaverIsSecure"), 0, &varType, (LPBYTE)szBuffer, &bufferSize);
if(result == ERROR_SUCCESS)
if(_ttoi(szBuffer) == 1) {
SendMessage(ControlScreenSaverIsSecure, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
goto End;
}
SendMessage(ControlScreenSaverIsSecure, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
End:
RegCloseKey(hKey); RegCloseKey(hKey);
if (result == ERROR_SUCCESS)
{
if(_ttoi(szBuffer) == 1)
{
SendDlgItemMessage(hwndDlg, IDC_SCREENS_USEPASSCHK, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
return;
}
}
SendDlgItemMessage(hwndDlg, IDC_SCREENS_USEPASSCHK, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
} }
/* Add the bitmaps in the C:\ReactOS directory and the current wallpaper if any */
void AddListViewItems2() VOID AddListViewItems(HWND hwndDlg)
{ {
HWND hwndScreenSaverList = GetDlgItem(hwndDlg, IDC_SCREENS_CHOICES);
WIN32_FIND_DATA fd; WIN32_FIND_DATA fd;
HANDLE hFind; HANDLE hFind;
TCHAR szSearchPath[MAX_PATH]; TCHAR szSearchPath[MAX_PATH];
@ -248,26 +278,27 @@ void AddListViewItems2()
//HKEY regKey; //HKEY regKey;
SHFILEINFO sfi; SHFILEINFO sfi;
HIMAGELIST himl; HIMAGELIST himl;
HIMAGELIST g_hScreenShellImageList = NULL; HIMAGELIST hScreenShellImageList = NULL;
//TCHAR wallpaperFilename[MAX_PATH]; //TCHAR wallpaperFilename[MAX_PATH];
//DWORD bufferSize = sizeof(wallpaperFilename); //DWORD bufferSize = sizeof(wallpaperFilename);
//DWORD varType = REG_SZ; //DWORD varType = REG_SZ;
//LONG result; //LONG result;
UINT i = 0; UINT i = 0;
int g_ScreenlistViewItemCount = 0; int ScreenlistViewItemCount = 0;
ScreenSaverItem *ScreenSaverItem = NULL; ScreenSaverItem *ScreenSaverItem = NULL;
HANDLE hModule = NULL;
GetClientRect(g_hScreengroundList, &clientRect); GetClientRect(hwndScreenSaverList, &clientRect);
ZeroMemory(&dummy, sizeof(LV_COLUMN)); ZeroMemory(&dummy, sizeof(LV_COLUMN));
dummy.mask = LVCF_SUBITEM | LVCF_WIDTH; dummy.mask = LVCF_SUBITEM | LVCF_WIDTH;
dummy.iSubItem = 0; dummy.iSubItem = 0;
dummy.cx = (clientRect.right - clientRect.left) - GetSystemMetrics(SM_CXVSCROLL); dummy.cx = (clientRect.right - clientRect.left) - GetSystemMetrics(SM_CXVSCROLL);
(void)ListView_InsertColumn(g_hScreengroundList, 0, &dummy); (void)ListView_InsertColumn(hwndScreenSaverList, 0, &dummy);
/* Add the "None" item */ /* Add the "None" item */
ScreenSaverItem = &g_ScreenSaverItems[g_ScreenlistViewItemCount]; ScreenSaverItem = &g_ScreenSaverItems[ScreenlistViewItemCount];
ScreenSaverItem->bIsScreenSaver = FALSE; ScreenSaverItem->bIsScreenSaver = FALSE;
@ -281,16 +312,16 @@ void AddListViewItems2()
listItem.state = LVIS_SELECTED; listItem.state = LVIS_SELECTED;
listItem.pszText = ScreenSaverItem->szDisplayName; listItem.pszText = ScreenSaverItem->szDisplayName;
listItem.iImage = -1; listItem.iImage = -1;
listItem.iItem = g_ScreenlistViewItemCount; listItem.iItem = ScreenlistViewItemCount;
listItem.lParam = g_ScreenlistViewItemCount; listItem.lParam = ScreenlistViewItemCount;
(void)ListView_InsertItem(g_hScreengroundList, &listItem); (void)ListView_InsertItem(hwndScreenSaverList, &listItem);
ListView_SetItemState(g_hScreengroundList, g_ScreenlistViewItemCount, LVIS_SELECTED, LVIS_SELECTED); ListView_SetItemState(hwndScreenSaverList, ScreenlistViewItemCount, LVIS_SELECTED, LVIS_SELECTED);
g_ScreenlistViewItemCount++; ScreenlistViewItemCount++;
/* Add current screensaver if any */ /* Add current screensaver if any */
/* /*
RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), 0, KEY_ALL_ACCESS, &regKey); RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), 0, KEY_ALL_ACCESS, &regKey);
result = RegQueryValueEx(regKey, TEXT("SCRNSAVE.EXE"), 0, &varType, (LPBYTE)wallpaperFilename, &bufferSize); result = RegQueryValueEx(regKey, TEXT("SCRNSAVE.EXE"), 0, &varType, (LPBYTE)wallpaperFilename, &bufferSize);
@ -337,7 +368,7 @@ void AddListViewItems2()
RegCloseKey(regKey); RegCloseKey(regKey);
*/ */
/* Add all the screensavers in the C:\ReactOS\System32 directory. */ /* Add all the screensavers in the C:\ReactOS\System32 directory. */
@ -345,10 +376,10 @@ void AddListViewItems2()
_tcscat(szSearchPath, TEXT("\\*.scr")); _tcscat(szSearchPath, TEXT("\\*.scr"));
hFind = FindFirstFile(szSearchPath, &fd); hFind = FindFirstFile(szSearchPath, &fd);
while(hFind != INVALID_HANDLE_VALUE) while (hFind != INVALID_HANDLE_VALUE)
{ {
/* Don't add any hidden screensavers */ /* Don't add any hidden screensavers */
if((fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0) if ((fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0)
{ {
TCHAR filename[MAX_PATH]; TCHAR filename[MAX_PATH];
@ -364,22 +395,36 @@ void AddListViewItems2()
SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_SMALLICON |
SHGFI_DISPLAYNAME); SHGFI_DISPLAYNAME);
if(himl == NULL) if (himl == NULL)
{ {
break; break;
} }
if(i++ == 0) if (i++ == 0)
{ {
g_hScreenShellImageList = himl; hScreenShellImageList = himl;
(void)ListView_SetImageList(g_hScreengroundList, himl, LVSIL_SMALL); (VOID)ListView_SetImageList(hwndScreenSaverList, himl, LVSIL_SMALL);
} }
ScreenSaverItem = &g_ScreenSaverItems[g_ScreenlistViewItemCount]; ScreenSaverItem = &g_ScreenSaverItems[ScreenlistViewItemCount];
ScreenSaverItem->bIsScreenSaver = TRUE; ScreenSaverItem->bIsScreenSaver = TRUE;
hModule = LoadLibraryEx(filename, NULL, DONT_RESOLVE_DLL_REFERENCES);
if (hModule)
{
LoadString(hModule,
1,
ScreenSaverItem->szDisplayName,
sizeof(ScreenSaverItem->szDisplayName) / sizeof(TCHAR));
FreeLibrary(hModule);
}
else
{
_tcscpy(ScreenSaverItem->szDisplayName, sfi.szDisplayName); _tcscpy(ScreenSaverItem->szDisplayName, sfi.szDisplayName);
}
_tcscpy(ScreenSaverItem->szFilename, filename); _tcscpy(ScreenSaverItem->szFilename, filename);
ZeroMemory(&listItem, sizeof(LV_ITEM)); ZeroMemory(&listItem, sizeof(LV_ITEM));
@ -387,20 +432,20 @@ void AddListViewItems2()
listItem.pszText = ScreenSaverItem->szDisplayName; listItem.pszText = ScreenSaverItem->szDisplayName;
listItem.state = 0; listItem.state = 0;
listItem.iImage = sfi.iIcon; listItem.iImage = sfi.iIcon;
listItem.iItem = g_ScreenlistViewItemCount; listItem.iItem = ScreenlistViewItemCount;
listItem.lParam = g_ScreenlistViewItemCount; listItem.lParam = ScreenlistViewItemCount;
(void)ListView_InsertItem(g_hScreengroundList, &listItem); (VOID)ListView_InsertItem(hwndScreenSaverList, &listItem);
g_ScreenlistViewItemCount++; ScreenlistViewItemCount++;
} }
if(!FindNextFile(hFind, &fd)) if (!FindNextFile(hFind, &fd))
hFind = INVALID_HANDLE_VALUE; hFind = INVALID_HANDLE_VALUE;
} }
} }
void SetScreenSaver() VOID SetScreenSaver(VOID)
{ {
HKEY regKey; HKEY regKey;
@ -423,4 +468,3 @@ void SetScreenSaver()
// SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, TEXT(""), SPIF_UPDATEINIFILE); // SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, TEXT(""), SPIF_UPDATEINIFILE);
//} //}
} }

View file

@ -32,7 +32,7 @@ BEGIN
LTEXT "Skärmsläckare:",IDC_STATIC,13, 24, 150, 9 LTEXT "Skärmsläckare:",IDC_STATIC,13, 24, 150, 9
CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT | CONTROL "",IDC_SCREENS_CHOICES,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS |
WS_BORDER | WS_TABSTOP,13, 34, 170, 69 LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP,13, 34, 170, 69
PUSHBUTTON "&Inställningar",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP PUSHBUTTON "&Inställningar",IDC_SCREENS_SETTINGS,188, 34, 50, 15,WS_GROUP
PUSHBUTTON "&Förhandsvisa",IDC_SCREENS_TESTSC,188, 52, 50, 15 PUSHBUTTON "&Förhandsvisa",IDC_SCREENS_TESTSC,188, 52, 50, 15