- Implement monitor bitmap support for the display dialog

- Fix incorrect codepage values
- Look for applets in windows dir as well as system dir
- Patch by Carlo Bramix
See issue #3158 for more details.

svn path=/trunk/; revision=49017
This commit is contained in:
Ged Murphy
2010-10-06 14:13:00 +00:00
parent 1689cea28b
commit 90bd7eaa64
23 changed files with 260 additions and 180 deletions
+130 -91
View File
@@ -17,6 +17,18 @@
#define PLACEMENT_STRETCH 1
#define PLACEMENT_TILE 2
/* The values in these macros are dependant on the
* layout of the monitor image and they must be adjusted
* if that image will be changed.
*/
#define MONITOR_LEFT 18
#define MONITOR_TOP 18
#define MONITOR_RIGHT 168
#define MONITOR_BOTTOM 128
#define MONITOR_WIDTH (MONITOR_RIGHT-MONITOR_LEFT)
#define MONITOR_HEIGHT (MONITOR_BOTTOM-MONITOR_TOP)
typedef struct
{
BOOL bWallpaper; /* Is this background a wallpaper */
@@ -303,7 +315,7 @@ InitBackgroundDialog(HWND hwndDlg, PDATA pData)
RegCloseKey(regKey);
pData->hBitmap = (HBITMAP) LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT);
pData->hBitmap = (HBITMAP) LoadImage(hApplet, MAKEINTRESOURCE(IDC_MONITOR), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
if (pData->hBitmap != NULL)
{
GetObject(pData->hBitmap, sizeof(BITMAP), &bitmap);
@@ -515,93 +527,139 @@ DrawBackgroundPreview(LPDRAWITEMSTRUCT draw, PDATA pData)
float scaleY;
int scaledWidth;
int scaledHeight;
int posX;
int posY;
int posX, desX;
int posY, desY;
HBRUSH hBrush;
int x;
int y;
HDC hDC;
HGDIOBJ hOldObj;
RECT rcItem = {
MONITOR_LEFT,
MONITOR_TOP,
MONITOR_RIGHT,
MONITOR_BOTTOM
};
hDC = CreateCompatibleDC(draw->hDC);
hOldObj = SelectObject(hDC, pData->hBitmap);
if (pData->backgroundItems[pData->backgroundSelection].bWallpaper == FALSE)
{
/* update desktop background color image */
hBrush = CreateSolidBrush(g_GlobalData.desktop_color);
FillRect(draw->hDC, &draw->rcItem, hBrush);
FillRect(hDC, &rcItem, hBrush);
DeleteObject(hBrush);
return;
}
if (pData->pWallpaperBitmap == NULL)
return;
scaleX = ((float)GetSystemMetrics(SM_CXSCREEN) - 1) / (float)draw->rcItem.right;
scaleY = ((float)GetSystemMetrics(SM_CYSCREEN) - 1) / (float)draw->rcItem.bottom;
scaledWidth = pData->pWallpaperBitmap->width / scaleX;
scaledHeight = pData->pWallpaperBitmap->height / scaleY;
posX = (draw->rcItem.right / 2) - (scaledWidth / 2);
posY = (draw->rcItem.bottom / 2) - (scaledHeight / 2);
FillRect(draw->hDC, &draw->rcItem, GetSysColorBrush(COLOR_BACKGROUND));
SetStretchBltMode(draw->hDC, COLORONCOLOR);
switch (pData->placementSelection)
else
if (pData->pWallpaperBitmap != NULL)
{
case PLACEMENT_CENTER:
StretchDIBits(draw->hDC,
posX,
posY,
scaledWidth,
scaledHeight,
0,
0,
pData->pWallpaperBitmap->width,
pData->pWallpaperBitmap->height,
pData->pWallpaperBitmap->bits,
pData->pWallpaperBitmap->info,
DIB_RGB_COLORS,
SRCCOPY);
break;
scaleX = ((float)GetSystemMetrics(SM_CXSCREEN) - 1) / (float)MONITOR_WIDTH;
scaleY = ((float)GetSystemMetrics(SM_CYSCREEN) - 1) / (float)MONITOR_HEIGHT;
case PLACEMENT_STRETCH:
StretchDIBits(draw->hDC,
0,
0,
draw->rcItem.right,
draw->rcItem.bottom,
0,
0,
pData->pWallpaperBitmap->width,
pData->pWallpaperBitmap->height,
pData->pWallpaperBitmap->bits,
pData->pWallpaperBitmap->info,
DIB_RGB_COLORS,
SRCCOPY);
break;
scaledWidth = (int)(pData->pWallpaperBitmap->width / scaleX);
scaledHeight = (int)(pData->pWallpaperBitmap->height / scaleY);
case PLACEMENT_TILE:
for (y = 0; y < draw->rcItem.bottom; y += scaledHeight)
{
for (x = 0; x < draw->rcItem.right; x += scaledWidth)
FillRect(hDC, &rcItem, GetSysColorBrush(COLOR_BACKGROUND));
SetStretchBltMode(hDC, COLORONCOLOR);
switch (pData->placementSelection)
{
case PLACEMENT_CENTER:
posX = (MONITOR_WIDTH - scaledWidth + 1) / 2;
posY = (MONITOR_HEIGHT - scaledHeight + 1) / 2;
desX = 0;
desY = 0;
if (posX < 0) { desX = -posX / 2; posX = 0; }
if (posY < 0) { desY = -posY / 2; posY = 0; }
if (scaledWidth > MONITOR_WIDTH)
scaledWidth = MONITOR_WIDTH;
if (scaledHeight > MONITOR_HEIGHT)
scaledHeight = MONITOR_HEIGHT;
StretchDIBits(hDC,
MONITOR_LEFT+posX,
MONITOR_TOP+posY,
scaledWidth,
scaledHeight,
desX,
desY,
pData->pWallpaperBitmap->width - (int)(desX * scaleX),
pData->pWallpaperBitmap->height - (int)(desY * scaleY),
pData->pWallpaperBitmap->bits,
pData->pWallpaperBitmap->info,
DIB_RGB_COLORS,
SRCCOPY);
break;
case PLACEMENT_STRETCH:
StretchDIBits(hDC,
MONITOR_LEFT,
MONITOR_TOP,
MONITOR_WIDTH,
MONITOR_HEIGHT,
0,
0,
pData->pWallpaperBitmap->width,
pData->pWallpaperBitmap->height,
pData->pWallpaperBitmap->bits,
pData->pWallpaperBitmap->info,
DIB_RGB_COLORS,
SRCCOPY);
break;
case PLACEMENT_TILE:
for (y = 0; y < MONITOR_HEIGHT; y += scaledHeight)
{
StretchDIBits(draw->hDC,
x,
y,
scaledWidth,
scaledHeight,
0,
0,
pData->pWallpaperBitmap->width,
pData->pWallpaperBitmap->height,
pData->pWallpaperBitmap->bits,
pData->pWallpaperBitmap->info,
DIB_RGB_COLORS,
SRCCOPY);
for (x = 0; x < MONITOR_WIDTH; x += scaledWidth)
{
if ((MONITOR_WIDTH-x) >= scaledWidth)
posX = scaledWidth;
else
posX = MONITOR_WIDTH-x;
if ((MONITOR_HEIGHT-y) >= scaledHeight)
posY = scaledHeight;
else
posY = MONITOR_HEIGHT-y;
StretchDIBits(hDC,
MONITOR_LEFT + x,
MONITOR_TOP + y,
posX,
posY,
0,
0,
pData->pWallpaperBitmap->width * posX / scaledWidth,
pData->pWallpaperBitmap->height * posY / scaledHeight,
pData->pWallpaperBitmap->bits,
pData->pWallpaperBitmap->info,
DIB_RGB_COLORS,
SRCCOPY);
}
}
}
break;
break;
}
}
TransparentBlt(draw->hDC,
draw->rcItem.left, draw->rcItem.top,
draw->rcItem.right-draw->rcItem.left+1,
draw->rcItem.bottom-draw->rcItem.top+1,
hDC,
0, 0,
pData->cxSource, pData->cySource,
0xFF00FF);
SelectObject(hDC, hOldObj);
DeleteDC(hDC);
}
@@ -724,25 +782,6 @@ BackgroundPageProc(HWND hwndDlg,
}
} break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc, hdcMem;
hdc = BeginPaint(hwndDlg, &ps);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, pData->hBitmap);
/*
TransparentBlt(hdc, 98, 0,
pData->cxSource, pData->cySource, hdcMem, 0, 0,
pData->cxSource, pData->cySource, 0xFF80FF);
*/
DeleteDC(hdcMem);
EndPaint(hwndDlg, &ps);
}
break;
case WM_DRAWITEM:
{
LPDRAWITEMSTRUCT drawItem;
+1 -1
View File
@@ -86,7 +86,7 @@ pCDevSettings_AllocAndCopyString(const TCHAR *pszSrc)
wcscpy(str,
pszSrc);
#else
MultiByteToWideChar(CP_APC,
MultiByteToWideChar(CP_ACP,
0,
pszSrc,
-1,
+2 -2
View File
@@ -8,7 +8,7 @@ CAPTION "
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -18,7 +18,7 @@ BEGIN
PUSHBUTTON "&Öâÿò...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "Ðàçïîëîæåíèå:", IDC_STATIC, 188, 138, 55, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
+2 -2
View File
@@ -12,7 +12,7 @@ CAPTION "Pozad
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "",IDC_BACKGROUND_PREVIEW,"Static",SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP,7,99,173,71
@@ -22,7 +22,7 @@ BEGIN
PUSHBUTTON "&Barva...",IDC_COLOR_BUTTON,187,155,50,14
LTEXT "Umístìní:",IDC_STATIC,187,98,36,8
COMBOBOX IDC_PLACEMENT_COMBO,187,108,50,90,CBS_DROPDOWNLIST |
CBS_SORT | WS_VSCROLL | WS_TABSTOP
WS_VSCROLL | WS_TABSTOP
END
+2 -2
View File
@@ -6,7 +6,7 @@ CAPTION "Desktop"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "&Farbe...", IDC_COLOR_BUTTON, 188, 177, 55, 15
LTEXT "&Ausrichtung:", IDC_STATIC, 188, 140, 50, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -6,7 +6,7 @@ CAPTION "
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 7, 99, 163, 71
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "&×ñþìá...", IDC_COLOR_BUTTON, 177, 155, 64, 14
LTEXT "ÈÝóç:", IDC_STATIC, 177, 98, 36, 8
COMBOBOX IDC_PLACEMENT_COMBO, 177, 108, 64, 90,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -6,7 +6,7 @@ CAPTION "Background"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "&Color...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "Placement:", IDC_STATIC, 188, 138, 36, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -14,7 +14,7 @@ CAPTION "Escritorio"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 7, 99, 173, 71
@@ -24,7 +24,7 @@ BEGIN
PUSHBUTTON "C&olor...", IDC_COLOR_BUTTON, 187, 155, 50, 14
LTEXT "Po&sición", IDC_STATIC, 187, 98, 36, 8
COMBOBOX IDC_PLACEMENT_COMBO, 187, 108, 50, 90,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -9,7 +9,7 @@ CAPTION "Fond d'
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW,"Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 7, 99, 173, 71
@@ -19,7 +19,7 @@ BEGIN
PUSHBUTTON "&Couleur...",IDC_COLOR_BUTTON, 187, 155, 50, 14
LTEXT "Position :",IDC_STATIC, 187, 98, 36, 8
COMBOBOX IDC_PLACEMENT_COMBO, 187, 108, 50, 90,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -7,7 +7,7 @@ CAPTION "H
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 7, 99, 173, 71
@@ -17,7 +17,7 @@ BEGIN
PUSHBUTTON "&Színek...", IDC_COLOR_BUTTON, 187, 155, 50, 14
LTEXT "Elrendezés:", IDC_STATIC, 187, 98, 36, 8
COMBOBOX IDC_PLACEMENT_COMBO, 187, 148, 50, 90,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -6,7 +6,7 @@ CAPTION "Latar Belakang"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "&Warna...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "Penempatan:", IDC_STATIC, 188, 138, 36, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+4 -4
View File
@@ -6,7 +6,7 @@ CAPTION "Sfondo"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 122, 174, 78
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "&Colore...", IDC_COLOR_BUTTON, 188, 185, 50, 15
LTEXT "Posizione:", IDC_STATIC, 188, 146, 36, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 157, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
@@ -201,8 +201,8 @@ BEGIN
IDS_CPLDESCRIPTION "Adatta la visualizzazione del desktop e dello screen saver."
IDS_NONE "(Niente)"
IDS_CENTER "Al centro"
IDS_STRETCH "Affiancata"
IDS_TILE "Estesa"
IDS_STRETCH "Estesa"
IDS_TILE "Affiancata"
END
STRINGTABLE DISCARDABLE
+2 -2
View File
@@ -6,7 +6,7 @@ CAPTION "
FONT 9, "MS UI Gothic"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "色(&C)...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "表\示位置:", IDC_STATIC, 188, 138, 36, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -8,7 +8,7 @@ CAPTION "Achtergrond"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static",SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 7, 99, 173, 71
@@ -18,7 +18,7 @@ BEGIN
PUSHBUTTON "&Kleur...", IDC_COLOR_BUTTON, 187, 155, 50, 14
LTEXT "&Weergave:", IDC_STATIC, 187, 98, 36, 8
COMBOBOX IDC_PLACEMENT_COMBO, 187, 108, 50, 90,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -6,7 +6,7 @@ CAPTION "Bakgrunn"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "&Farger...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "Plassering:", IDC_STATIC, 188, 138, 36, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
+2 -2
View File
@@ -16,7 +16,7 @@ CAPTION "Pulpit"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 7, 99, 173, 71
@@ -26,7 +26,7 @@ BEGIN
PUSHBUTTON "&Kolor...", IDC_COLOR_BUTTON, 187, 155, 50, 14
LTEXT "Po³o¿enie:", IDC_STATIC, 187, 98, 36, 8
COMBOBOX IDC_PLACEMENT_COMBO, 187, 108, 50, 90,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -8,7 +8,7 @@ CAPTION "Fundal"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -18,7 +18,7 @@ BEGIN
PUSHBUTTON "&Culoare...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "Poziție:", IDC_STATIC, 188, 138, 36, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
+2 -2
View File
@@ -6,7 +6,7 @@ CAPTION "
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -16,7 +16,7 @@ BEGIN
PUSHBUTTON "&Öâåò...", IDC_COLOR_BUTTON, 188, 167, 55, 15
LTEXT "Ðàñïîëîæåíèå:", IDC_STATIC, 188, 138, 55, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 55, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -14,7 +14,7 @@ CAPTION "Pozadie"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -24,7 +24,7 @@ BEGIN
PUSHBUTTON "&Farba...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "&Umiestnenie:", IDC_STATIC, 188, 138, 50, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
+2 -2
View File
@@ -9,7 +9,7 @@ CAPTION "Bakgrund"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "",IDC_BACKGROUND_PREVIEW,"Static",SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP,7,99,173,71
@@ -19,7 +19,7 @@ BEGIN
PUSHBUTTON "&Färg...",IDC_COLOR_BUTTON,187,155,50,14
LTEXT "Placering:",IDC_STATIC,187,98,36,8
COMBOBOX IDC_PLACEMENT_COMBO,187,108,50,90,CBS_DROPDOWNLIST |
CBS_SORT | WS_VSCROLL | WS_TABSTOP
WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -14,7 +14,7 @@ CAPTION "
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70, WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "", IDC_BACKGROUND_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -24,7 +24,7 @@ BEGIN
PUSHBUTTON "&Êîë³ð...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "Ðîçòàøóâàííÿ:", IDC_STATIC, 188, 138, 51, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_SCREENSAVER DIALOGEX 0, 0, 246, 204
+2 -2
View File
@@ -13,7 +13,7 @@ CAPTION "
FONT 9, "MS Shell Dlg"
BEGIN
CONTROL "", IDC_BACKGROUND_PREVIEW, "Static", SS_OWNERDRAW,
70, 10, 105, 70,WS_EX_STATICEDGE
70, 10, 105, 80, 0
CONTROL "",IDC_BACKGROUND_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS |
WS_BORDER | WS_TABSTOP, 8, 114, 174, 78
@@ -23,7 +23,7 @@ BEGIN
PUSHBUTTON "颜色(&C)...", IDC_COLOR_BUTTON, 188, 177, 50, 15
LTEXT "位置:", IDC_STATIC, 188, 138, 36, 9
COMBOBOX IDC_PLACEMENT_COMBO, 188, 149, 50, 54,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
+87 -46
View File
@@ -22,9 +22,10 @@ typedef struct
typedef struct _DATA
{
ScreenSaverItem ScreenSaverItems[MAX_SCREENSAVERS];
ScreenSaverItem ScreenSaverItems[MAX_SCREENSAVERS];
PROCESS_INFORMATION PrevWindowPi;
int Selection;
int Selection;
UINT ScreenSaverCount;
} DATA, *PDATA;
@@ -235,7 +236,7 @@ ScreensaverPreview(HWND hwndDlg, PDATA pData)
/s Run normal
*/
WCHAR szCmdline[2048];
TCHAR szCmdline[2048];
STARTUPINFO si;
PROCESS_INFORMATION pi;
@@ -322,59 +323,39 @@ CheckRegScreenSaverIsSecure(HWND hwndDlg)
static VOID
AddScreenSavers(HWND hwndDlg, PDATA pData)
SearchScreenSavers(HWND hwndScreenSavers,
LPCTSTR pszSearchPath,
PDATA pData)
{
HWND hwndScreenSavers = GetDlgItem(hwndDlg, IDC_SCREENS_LIST);
WIN32_FIND_DATA fd;
HANDLE hFind;
TCHAR szSearchPath[MAX_PATH];
INT i;
int ScreenSaverCount = 0;
ScreenSaverItem *ScreenSaverItem = NULL;
HANDLE hModule = NULL;
WIN32_FIND_DATA fd;
TCHAR szSearchPath[MAX_PATH];
HANDLE hFind;
ScreenSaverItem *ScreenSaverItem;
HANDLE hModule;
UINT i, ScreenSaverCount;
/* Add the "None" item */
ScreenSaverItem = &pData->ScreenSaverItems[ScreenSaverCount];
ScreenSaverCount = pData->ScreenSaverCount;
ScreenSaverItem->bIsScreenSaver = FALSE;
LoadString(hApplet,
IDS_NONE,
ScreenSaverItem->szDisplayName,
sizeof(ScreenSaverItem->szDisplayName) / sizeof(TCHAR));
i = SendMessage(hwndScreenSavers,
CB_ADDSTRING,
0,
(LPARAM)ScreenSaverItem->szDisplayName);
SendMessage(hwndScreenSavers,
CB_SETITEMDATA,
i,
(LPARAM)ScreenSaverCount);
ScreenSaverCount++;
/* Add all the screensavers in the C:\ReactOS\System32 directory. */
GetSystemDirectory(szSearchPath, MAX_PATH);
_tcscpy(szSearchPath, pszSearchPath);
_tcscat(szSearchPath, TEXT("\\*.scr"));
hFind = FindFirstFile(szSearchPath, &fd);
while (ScreenSaverCount < MAX_SCREENSAVERS-1 &&
hFind != INVALID_HANDLE_VALUE)
if (hFind == INVALID_HANDLE_VALUE)
return;
while (ScreenSaverCount < MAX_SCREENSAVERS)
{
/* Don't add any hidden screensavers */
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0)
{
TCHAR filename[MAX_PATH];
GetSystemDirectory(filename, MAX_PATH);
_tcscat(filename, TEXT("\\"));
_tcscpy(filename, pszSearchPath);
_tcscat(filename, _T("\\"));
_tcscat(filename, fd.cFileName);
ScreenSaverItem = &pData->ScreenSaverItems[ScreenSaverCount];
ScreenSaverItem = pData->ScreenSaverItems + ScreenSaverCount;
ScreenSaverItem->bIsScreenSaver = TRUE;
@@ -383,11 +364,16 @@ AddScreenSavers(HWND hwndDlg, PDATA pData)
DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
if (hModule)
{
LoadString(hModule,
if (0 == LoadString(hModule,
1,
ScreenSaverItem->szDisplayName,
sizeof(ScreenSaverItem->szDisplayName) / sizeof(TCHAR));
FreeLibrary(hModule);
sizeof(ScreenSaverItem->szDisplayName) / sizeof(TCHAR)))
{
// If the string does not exists, copy the name of the file
_tcscpy(ScreenSaverItem->szDisplayName, fd.cFileName);
ScreenSaverItem->szDisplayName[_tcslen(fd.cFileName)-4] = '\0';
}
FreeLibrary(hModule);
}
else
{
@@ -410,7 +396,62 @@ AddScreenSavers(HWND hwndDlg, PDATA pData)
}
if (!FindNextFile(hFind, &fd))
hFind = INVALID_HANDLE_VALUE;
break;
}
FindClose(hFind);
pData->ScreenSaverCount = ScreenSaverCount;
}
static VOID
AddScreenSavers(HWND hwndDlg, PDATA pData)
{
HWND hwndScreenSavers = GetDlgItem(hwndDlg, IDC_SCREENS_LIST);
TCHAR szSearchPath[MAX_PATH];
INT i;
ScreenSaverItem *ScreenSaverItem = NULL;
LPTSTR lpBackSlash;
/* Add the "None" item */
ScreenSaverItem = pData->ScreenSaverItems;
ScreenSaverItem->bIsScreenSaver = FALSE;
LoadString(hApplet,
IDS_NONE,
ScreenSaverItem->szDisplayName,
sizeof(ScreenSaverItem->szDisplayName) / sizeof(TCHAR));
i = SendMessage(hwndScreenSavers,
CB_ADDSTRING,
0,
(LPARAM)ScreenSaverItem->szDisplayName);
SendMessage(hwndScreenSavers,
CB_SETITEMDATA,
i,
(LPARAM)0);
// Initialize number of items into the list
pData->ScreenSaverCount = 1;
// Add all the screensavers in the C:\ReactOS\System32 directory.
GetSystemDirectory(szSearchPath, MAX_PATH);
SearchScreenSavers(hwndScreenSavers, szSearchPath, pData);
// Add all the screensavers in the C:\ReactOS directory.
GetWindowsDirectory(szSearchPath, MAX_PATH);
SearchScreenSavers(hwndScreenSavers, szSearchPath, pData);
// Add all the screensavers where the applet is stored.
GetModuleFileName(hApplet, szSearchPath, MAX_PATH);
lpBackSlash = _tcsrchr(szSearchPath, _T('\\'));
if (lpBackSlash != NULL)
{
lpBackSlash = '\0';
SearchScreenSavers(hwndScreenSavers, szSearchPath, pData);
}
}