https://git.reactos.org/?p=reactos.git;a=commitdiff;h=092fc8edd0c8895e361a3dda5d90f185a1145ac8

commit 092fc8edd0c8895e361a3dda5d90f185a1145ac8
Author:     Stanislav Motylkov <x86co...@gmail.com>
AuthorDate: Mon Oct 3 17:32:42 2022 +0300
Commit:     Stanislav Motylkov <x86co...@gmail.com>
CommitDate: Tue Oct 4 21:16:07 2022 +0300

    [DESK] Show screensaver preview in a monitor
    
    Reuse the same monitor bitmap for the top preview control.
    Also use Windows-compatible class name for it.
    
    CORE-10606
---
 dll/cpl/desk/lang/bg-BG.rc |  2 +-
 dll/cpl/desk/lang/cs-CZ.rc |  2 +-
 dll/cpl/desk/lang/de-DE.rc |  2 +-
 dll/cpl/desk/lang/el-GR.rc |  2 +-
 dll/cpl/desk/lang/en-GB.rc |  2 +-
 dll/cpl/desk/lang/en-US.rc |  2 +-
 dll/cpl/desk/lang/es-ES.rc |  2 +-
 dll/cpl/desk/lang/et-EE.rc |  2 +-
 dll/cpl/desk/lang/fr-FR.rc |  2 +-
 dll/cpl/desk/lang/he-IL.rc |  2 +-
 dll/cpl/desk/lang/hu-HU.rc |  2 +-
 dll/cpl/desk/lang/id-ID.rc |  2 +-
 dll/cpl/desk/lang/it-IT.rc |  2 +-
 dll/cpl/desk/lang/ja-JP.rc |  2 +-
 dll/cpl/desk/lang/nl-NL.rc |  2 +-
 dll/cpl/desk/lang/no-NO.rc |  2 +-
 dll/cpl/desk/lang/pl-PL.rc |  2 +-
 dll/cpl/desk/lang/pt-BR.rc |  2 +-
 dll/cpl/desk/lang/pt-PT.rc |  2 +-
 dll/cpl/desk/lang/ro-RO.rc |  2 +-
 dll/cpl/desk/lang/ru-RU.rc |  2 +-
 dll/cpl/desk/lang/sk-SK.rc |  2 +-
 dll/cpl/desk/lang/sq-AL.rc |  2 +-
 dll/cpl/desk/lang/sv-SE.rc |  2 +-
 dll/cpl/desk/lang/tr-TR.rc |  2 +-
 dll/cpl/desk/lang/uk-UA.rc |  2 +-
 dll/cpl/desk/lang/zh-CN.rc |  2 +-
 dll/cpl/desk/lang/zh-HK.rc |  2 +-
 dll/cpl/desk/lang/zh-TW.rc |  2 +-
 dll/cpl/desk/screensaver.c | 89 +++++++++++++++++++++++++++++++++++++++++++++-
 30 files changed, 117 insertions(+), 30 deletions(-)

diff --git a/dll/cpl/desk/lang/bg-BG.rc b/dll/cpl/desk/lang/bg-BG.rc
index b742bfd45b1..4dae3f7b9ae 100644
--- a/dll/cpl/desk/lang/bg-BG.rc
+++ b/dll/cpl/desk/lang/bg-BG.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Екранен предпазител"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Екранен предпазител", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "На&стройки", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/cs-CZ.rc b/dll/cpl/desk/lang/cs-CZ.rc
index 386411e122d..9d083f1936e 100644
--- a/dll/cpl/desk/lang/cs-CZ.rc
+++ b/dll/cpl/desk/lang/cs-CZ.rc
@@ -39,7 +39,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Spořič obrazovky"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Spořič obrazovky", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Nastavení", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/de-DE.rc b/dll/cpl/desk/lang/de-DE.rc
index d83f0b84916..ddf5cb6ed79 100644
--- a/dll/cpl/desk/lang/de-DE.rc
+++ b/dll/cpl/desk/lang/de-DE.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Bildschirmschoner"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "Bild&schirmschoner", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Eins&tellungen", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, 
WS_GROUP
diff --git a/dll/cpl/desk/lang/el-GR.rc b/dll/cpl/desk/lang/el-GR.rc
index c3a5444845e..6678325805b 100644
--- a/dll/cpl/desk/lang/el-GR.rc
+++ b/dll/cpl/desk/lang/el-GR.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Προφύλαξη οθόνης"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "Προφύλαξη οθόνης", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Ρυθμίσεις", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/en-GB.rc b/dll/cpl/desk/lang/en-GB.rc
index d0fc9282a17..11609378370 100644
--- a/dll/cpl/desk/lang/en-GB.rc
+++ b/dll/cpl/desk/lang/en-GB.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Screensaver"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Screensaver", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Se&ttings", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/en-US.rc b/dll/cpl/desk/lang/en-US.rc
index 12cc26ce914..2de5355fc14 100644
--- a/dll/cpl/desk/lang/en-US.rc
+++ b/dll/cpl/desk/lang/en-US.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Screensaver"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Screensaver", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Se&ttings", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/es-ES.rc b/dll/cpl/desk/lang/es-ES.rc
index 21ce9e4fe2c..244ec1931f4 100644
--- a/dll/cpl/desk/lang/es-ES.rc
+++ b/dll/cpl/desk/lang/es-ES.rc
@@ -43,7 +43,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Protector de pantalla"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Protector de pantalla ", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "C&onfiguración", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, 
WS_GROUP
diff --git a/dll/cpl/desk/lang/et-EE.rc b/dll/cpl/desk/lang/et-EE.rc
index 4436b9c0b73..74b1198e85b 100644
--- a/dll/cpl/desk/lang/et-EE.rc
+++ b/dll/cpl/desk/lang/et-EE.rc
@@ -40,7 +40,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Ekraanisäästja"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Erkaanisäästja", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "S&ätted", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/fr-FR.rc b/dll/cpl/desk/lang/fr-FR.rc
index 9f8a90e1e0b..1cf8f9868c1 100644
--- a/dll/cpl/desk/lang/fr-FR.rc
+++ b/dll/cpl/desk/lang/fr-FR.rc
@@ -35,7 +35,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Écran de veille"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "É&cran de veille", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Paramè&tres", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/he-IL.rc b/dll/cpl/desk/lang/he-IL.rc
index e5b4c511655..60e1156616d 100644
--- a/dll/cpl/desk/lang/he-IL.rc
+++ b/dll/cpl/desk/lang/he-IL.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "שומר מסך"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "שומר מסך", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "הגדרות", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/hu-HU.rc b/dll/cpl/desk/lang/hu-HU.rc
index f96f7c872c6..1f3d1b70309 100644
--- a/dll/cpl/desk/lang/hu-HU.rc
+++ b/dll/cpl/desk/lang/hu-HU.rc
@@ -35,7 +35,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Képernyőkímélő"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Képernyőkímélő", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Beállítások", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/id-ID.rc b/dll/cpl/desk/lang/id-ID.rc
index a2f0a2fe2dc..5e85b95bbca 100644
--- a/dll/cpl/desk/lang/id-ID.rc
+++ b/dll/cpl/desk/lang/id-ID.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Screensaver"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Screensaver", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Se&telan", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/it-IT.rc b/dll/cpl/desk/lang/it-IT.rc
index d66cf49191d..e96ec2d79d6 100644
--- a/dll/cpl/desk/lang/it-IT.rc
+++ b/dll/cpl/desk/lang/it-IT.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Salva schermo"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Salva schermo", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Impostazioni", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, 
WS_GROUP
diff --git a/dll/cpl/desk/lang/ja-JP.rc b/dll/cpl/desk/lang/ja-JP.rc
index 432b61a7fef..e98ce8bca89 100644
--- a/dll/cpl/desk/lang/ja-JP.rc
+++ b/dll/cpl/desk/lang/ja-JP.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "スクリーン セーバー"
 FONT 9, "MS UI Gothic", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "スクリーン セーバー(&S)", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "設定(&T)", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/nl-NL.rc b/dll/cpl/desk/lang/nl-NL.rc
index fca749f8c8f..6487d1ee77e 100644
--- a/dll/cpl/desk/lang/nl-NL.rc
+++ b/dll/cpl/desk/lang/nl-NL.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Schermbeveiliging"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Schermbeveiliging", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Instellingen", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, 
WS_GROUP
diff --git a/dll/cpl/desk/lang/no-NO.rc b/dll/cpl/desk/lang/no-NO.rc
index d6520cb9f0c..9fa117f234e 100644
--- a/dll/cpl/desk/lang/no-NO.rc
+++ b/dll/cpl/desk/lang/no-NO.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Skjermsparer"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Skjermsparer", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Inn&stillinger", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, 
WS_GROUP
diff --git a/dll/cpl/desk/lang/pl-PL.rc b/dll/cpl/desk/lang/pl-PL.rc
index e88a01a9988..8409da7729a 100644
--- a/dll/cpl/desk/lang/pl-PL.rc
+++ b/dll/cpl/desk/lang/pl-PL.rc
@@ -43,7 +43,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Wygaszacz ekranu"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Wygaszacz ekranu", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Ustawienia", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/pt-BR.rc b/dll/cpl/desk/lang/pt-BR.rc
index 2a524c8c992..ea7bbfcc074 100644
--- a/dll/cpl/desk/lang/pt-BR.rc
+++ b/dll/cpl/desk/lang/pt-BR.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Proteção de tela"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "Proteção de &tela", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Configurações", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, 
WS_GROUP
diff --git a/dll/cpl/desk/lang/pt-PT.rc b/dll/cpl/desk/lang/pt-PT.rc
index 2c93d48cbbf..5275419926f 100644
--- a/dll/cpl/desk/lang/pt-PT.rc
+++ b/dll/cpl/desk/lang/pt-PT.rc
@@ -38,7 +38,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Protecção de ecrã"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "Protecção de &ecrã", IDC_SCREENS_DUMMY, 8, 92, 230, 64
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Definições", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/ro-RO.rc b/dll/cpl/desk/lang/ro-RO.rc
index bf87ce2334d..a6655c12562 100644
--- a/dll/cpl/desk/lang/ro-RO.rc
+++ b/dll/cpl/desk/lang/ro-RO.rc
@@ -38,7 +38,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Regim de inactivitate"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "Ani&mație de ecran inactiv", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Opțiuni", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/ru-RU.rc b/dll/cpl/desk/lang/ru-RU.rc
index c48b93a8c78..afe0555ac7f 100644
--- a/dll/cpl/desk/lang/ru-RU.rc
+++ b/dll/cpl/desk/lang/ru-RU.rc
@@ -33,7 +33,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Заставка"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Заставка", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Параметры", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/sk-SK.rc b/dll/cpl/desk/lang/sk-SK.rc
index fd458e45db3..ce7e673f425 100644
--- a/dll/cpl/desk/lang/sk-SK.rc
+++ b/dll/cpl/desk/lang/sk-SK.rc
@@ -35,7 +35,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Šetrič obrazovky"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "Šetrič o&brazovky", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Nastavenie", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/sq-AL.rc b/dll/cpl/desk/lang/sq-AL.rc
index b6b504e1e49..5722554caab 100644
--- a/dll/cpl/desk/lang/sq-AL.rc
+++ b/dll/cpl/desk/lang/sq-AL.rc
@@ -37,7 +37,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Screensaver"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Screensaver", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Cilësime&t", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/sv-SE.rc b/dll/cpl/desk/lang/sv-SE.rc
index 409fc3f491b..2533296827e 100644
--- a/dll/cpl/desk/lang/sv-SE.rc
+++ b/dll/cpl/desk/lang/sv-SE.rc
@@ -35,7 +35,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Screensaver"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Screensaver", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "Se&ttings", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/tr-TR.rc b/dll/cpl/desk/lang/tr-TR.rc
index c828f0b5cb9..759472c8f13 100644
--- a/dll/cpl/desk/lang/tr-TR.rc
+++ b/dll/cpl/desk/lang/tr-TR.rc
@@ -35,7 +35,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Ekran Koruyucu"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "Ekran Koruyucu", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Ayarlar", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/uk-UA.rc b/dll/cpl/desk/lang/uk-UA.rc
index 5e9d3a285e2..4343a9ad45d 100644
--- a/dll/cpl/desk/lang/uk-UA.rc
+++ b/dll/cpl/desk/lang/uk-UA.rc
@@ -41,7 +41,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Заставка"
 FONT 8, "MS Shell Dlg", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "&Заставка", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "П&араметри", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/zh-CN.rc b/dll/cpl/desk/lang/zh-CN.rc
index a9a51d7d598..df8d1e8ab74 100644
--- a/dll/cpl/desk/lang/zh-CN.rc
+++ b/dll/cpl/desk/lang/zh-CN.rc
@@ -43,7 +43,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "屏幕保护程序"
 FONT 9, "宋体", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "屏幕保护程序(&S)", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "设置(&T)...", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/zh-HK.rc b/dll/cpl/desk/lang/zh-HK.rc
index 2e42c33b408..62fa240f8c1 100644
--- a/dll/cpl/desk/lang/zh-HK.rc
+++ b/dll/cpl/desk/lang/zh-HK.rc
@@ -41,7 +41,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "螢幕保護裝置"
 FONT 9, "新細明體", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "螢幕保護裝置(&S)", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "設定(&T)...", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/lang/zh-TW.rc b/dll/cpl/desk/lang/zh-TW.rc
index 2f8a659304c..8f08fefd871 100644
--- a/dll/cpl/desk/lang/zh-TW.rc
+++ b/dll/cpl/desk/lang/zh-TW.rc
@@ -42,7 +42,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "螢幕保護裝置"
 FONT 9, "新細明體", 0, 0
 BEGIN
-    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 70, 
WS_EX_STATICEDGE
+    CONTROL "", IDC_SCREENS_PREVIEW, "Static", SS_OWNERDRAW, 70, 10, 105, 74
     GROUPBOX "螢幕保護裝置(&S)", IDC_SCREENS_DUMMY, 8, 92, 230, 52
     COMBOBOX IDC_SCREENS_LIST, 14, 103, 100, 100, CBS_DROPDOWNLIST | CBS_SORT 
| WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "設定(&T)...", IDC_SCREENS_SETTINGS, 120, 102, 50, 15, WS_GROUP
diff --git a/dll/cpl/desk/screensaver.c b/dll/cpl/desk/screensaver.c
index 02c05c9b650..f4b81612ca3 100644
--- a/dll/cpl/desk/screensaver.c
+++ b/dll/cpl/desk/screensaver.c
@@ -12,6 +12,8 @@
 
 #define MAX_SCREENSAVERS 100
 
+static const TCHAR szPreviewWndClass[] = TEXT("SSDemoParent");
+
 typedef struct
 {
     BOOL  bIsScreenSaver; /* Is this background a wallpaper */
@@ -26,6 +28,7 @@ typedef struct _DATA
     PROCESS_INFORMATION PrevWindowPi;
     int                 Selection;
     UINT                ScreenSaverCount;
+    HWND                ScreenSaverPreviewParent;
 } DATA, *PDATA;
 
 
@@ -104,10 +107,48 @@ SelectionChanged(HWND hwndDlg, PDATA pData)
 }
 
 
+static VOID
+ShowScreenSaverPreview(IN LPDRAWITEMSTRUCT draw, IN PDATA pData)
+{
+    HBRUSH hBrush;
+    HDC hDC;
+    HGDIOBJ hOldObj;
+    RECT rcItem = {
+        MONITOR_LEFT,
+        MONITOR_TOP,
+        MONITOR_RIGHT,
+        MONITOR_BOTTOM
+    };
+
+    hDC = CreateCompatibleDC(draw->hDC);
+    hOldObj = SelectObject(hDC, g_GlobalData.hMonitorBitmap);
+
+    if (!IsWindowVisible(pData->ScreenSaverPreviewParent))
+    {
+        /* FIXME: Draw static bitmap inside monitor. */
+        hBrush = CreateSolidBrush(g_GlobalData.desktop_color);
+        FillRect(hDC, &rcItem, hBrush);
+        DeleteObject(hBrush);
+    }
+
+    GdiTransparentBlt(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,
+                      g_GlobalData.bmMonWidth, g_GlobalData.bmMonHeight,
+                      MONITOR_ALPHA);
+
+    SelectObject(hDC, hOldObj);
+    DeleteDC(hDC);
+}
+
+
 static VOID
 SetScreenSaverPreviewBox(HWND hwndDlg, PDATA pData)
 {
-    HWND hPreview = GetDlgItem(hwndDlg, IDC_SCREENS_PREVIEW);
+    HWND hPreview = pData->ScreenSaverPreviewParent;
     STARTUPINFO si;
     TCHAR szCmdline[2048];
 
@@ -119,6 +160,7 @@ SetScreenSaverPreviewBox(HWND hwndDlg, PDATA pData)
         CloseHandle(pData->PrevWindowPi.hThread);
         pData->PrevWindowPi.hThread = pData->PrevWindowPi.hProcess = NULL;
     }
+    ShowWindow(pData->ScreenSaverPreviewParent, SW_HIDE);
 
     if (pData->Selection > 0)
     {
@@ -131,6 +173,8 @@ SetScreenSaverPreviewBox(HWND hwndDlg, PDATA pData)
         si.cb = sizeof(si);
         ZeroMemory(&pData->PrevWindowPi, sizeof(pData->PrevWindowPi));
 
+        ShowWindow(pData->ScreenSaverPreviewParent, SW_SHOW);
+
         if (!CreateProcess(NULL,
                            szCmdline,
                            NULL,
@@ -584,6 +628,7 @@ OnInitDialog(HWND hwndDlg, PDATA pData)
     LPTSTR lpCurSs;
     HWND hwndSSCombo = GetDlgItem(hwndDlg, IDC_SCREENS_LIST);
     INT Num;
+    WNDCLASS wc = {0};
 
     pData = HeapAlloc(GetProcessHeap(),
                             HEAP_ZERO_MEMORY,
@@ -594,6 +639,32 @@ OnInitDialog(HWND hwndDlg, PDATA pData)
         return FALSE;
     }
 
+    wc.lpfnWndProc = DefWindowProc;
+    wc.hInstance = hApplet;
+    wc.hCursor = NULL;
+    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
+    wc.lpszClassName = szPreviewWndClass;
+
+    if (RegisterClass(&wc))
+    {
+        HWND hParent = GetDlgItem(hwndDlg, IDC_SCREENS_PREVIEW);
+        HWND hChild;
+
+        hChild = CreateWindowEx(0, szPreviewWndClass, NULL,
+                                WS_CHILD, 0, 0, 0, 0, hParent,
+                                NULL, hApplet, NULL);
+        if (hChild != NULL)
+        {
+            RECT rc;
+            GetClientRect(hParent, &rc);
+            rc.left += MONITOR_LEFT;
+            rc.top += MONITOR_TOP;
+            MoveWindow(hChild, rc.left, rc.top, MONITOR_WIDTH, MONITOR_HEIGHT, 
FALSE);
+        }
+
+        pData->ScreenSaverPreviewParent = hChild;
+    }
+
     SetWindowLongPtr(hwndDlg,
                      DWLP_USER,
                      (LONG_PTR)pData);
@@ -708,6 +779,12 @@ ScreenSaverPageProc(HWND hwndDlg,
 
         case WM_DESTROY:
         {
+            if (pData->ScreenSaverPreviewParent)
+            {
+                DestroyWindow(pData->ScreenSaverPreviewParent);
+                pData->ScreenSaverPreviewParent = NULL;
+            }
+            UnregisterClass(szPreviewWndClass, hApplet);
             if (pData->PrevWindowPi.hProcess)
             {
                 TerminateProcess(pData->PrevWindowPi.hProcess, 0);
@@ -727,6 +804,16 @@ ScreenSaverPageProc(HWND hwndDlg,
             break;
         }
 
+        case WM_DRAWITEM:
+        {
+            LPDRAWITEMSTRUCT lpDrawItem;
+            lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
+
+            if (lpDrawItem->CtlID == IDC_SCREENS_PREVIEW)
+                ShowScreenSaverPreview(lpDrawItem, pData);
+            break;
+        }
+
         case WM_COMMAND:
         {
             DWORD controlId = LOWORD(wParam);

Reply via email to