ReactOS 0.4.15-dev-8245-gd24675b
desk.c File Reference
#include "desk.h"
#include <shellapi.h>
#include <cplext.h>
#include <winnls.h>
#include <debug.h>
Include dependency graph for desk.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

VOID WINAPI Control_RunDLLW (HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow)
 
static LONG APIENTRY DisplayApplet (HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK ThemesPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK BackgroundPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK ScreenSaverPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK AppearancePageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK SettingsPageProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
UINT CALLBACK SettingsPageCallbackProc (HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp)
 
HMENU LoadPopupMenu (IN HINSTANCE hInstance, IN LPCTSTR lpMenuName)
 
static BOOL CALLBACK DisplayAppletPropSheetAddPage (HPROPSHEETPAGE hpage, LPARAM lParam)
 
static BOOL InitPropSheetPage (PROPSHEETHEADER *ppsh, WORD idDlg, DLGPROC DlgProc, LPFNPSPCALLBACK pfnCallback)
 
static int CALLBACK PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 
LONG CALLBACK CPlApplet (HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
 
void WINAPI InstallScreenSaverW (IN HWND hWindow, IN HANDLE hInstance, IN LPCWSTR pszFile, IN UINT nCmdShow)
 
void WINAPI InstallScreenSaverA (IN HWND hWindow, IN HANDLE hInstance, IN LPCSTR pszFile, IN UINT nCmdShow)
 
BOOL WINAPI DllMain (HINSTANCE hInstDLL, DWORD dwReason, LPVOID lpvReserved)
 

Variables

HINSTANCE hApplet = NULL
 
HWND hCPLWindow = NULL
 
APPLET Applets []
 
struct {
   WORD   idDlg
 
   DLGPROC   DlgProc
 
   LPFNPSPCALLBACK   Callback
 
   LPWSTR   Name
 
PropPages []
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 16 of file desk.c.

Function Documentation

◆ AppearancePageProc()

INT_PTR CALLBACK AppearancePageProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 216 of file appearance.c.

217{
218 GLOBALS *g;
219 LPNMHDR lpnm;
220
221 g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
222
223 switch (uMsg)
224 {
225 case WM_INITDIALOG:
226 return AppearancePage_OnInit(hwndDlg);
227
228 case WM_DESTROY:
229 AppearancePage_OnDestroy(hwndDlg, g);
230 break;
231
232 case WM_COMMAND:
233 if (g == NULL || g->bInitializing)
234 return FALSE;
235
236 switch (LOWORD(wParam))
237 {
240 hwndDlg, EffAppearanceDlgProc, (LPARAM)g) == IDOK)
241 {
242 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
243 g->Scheme = g->SchemeAdv;
244 g->bSchemeChanged = TRUE;
245 }
246 break;
247
250 hwndDlg, AdvAppearanceDlgProc, (LPARAM)g) == IDOK)
251 {
252 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
253 g->bSchemeChanged = TRUE;
254 g->Scheme = g->SchemeAdv;
255 g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
256
258 }
259 break;
260
263 {
264 g->ActiveTheme.Color = (PTHEME_STYLE)GetSelectedData(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
265 if (g->ActiveTheme.Color->ChildStyle != NULL)
266 g->ActiveTheme.Size = g->ActiveTheme.Color->ChildStyle;
267
268 g->bSchemeChanged = TRUE;
269 if (g->ActiveTheme.ThemeActive)
270 g->bThemeChanged = TRUE;
271
272 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
273
275 AppearancePage_ShowSizes(hwndDlg, g);
277 }
278 break;
279
282 {
284
285 if (g->ClassicTheme.Theme == pTheme)
286 g->ActiveTheme = g->ClassicTheme;
287 else
288 {
289 g->ActiveTheme.Theme = pTheme;
290 g->ActiveTheme.Size = pTheme->SizesList;
291 g->ActiveTheme.Color = pTheme->ColoursList;
292 g->ActiveTheme.ThemeActive = TRUE;
293 }
294
295 g->bThemeChanged = TRUE;
296 g->bSchemeChanged = TRUE;
297
298 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
299
301 AppearancePage_ShowSizes(hwndDlg, g);
304 }
305 break;
306
309 {
310 g->ActiveTheme.Size = (PTHEME_STYLE)GetSelectedData(hwndDlg, IDC_APPEARANCE_SIZE);
311 g->bSchemeChanged = TRUE;
312 if (g->ActiveTheme.ThemeActive)
313 g->bThemeChanged = TRUE;
314
315 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
316
319 }
320 }
321 break;
322
323 case WM_NOTIFY:
324 lpnm = (LPNMHDR)lParam;
325 switch (lpnm->code)
326 {
327 case PSN_APPLY:
328
329 if (g->bThemeChanged)
330 {
331 ActivateTheme(&g->ActiveTheme);
332 }
333
334 if (g->bSchemeChanged)
335 {
336 ApplyScheme(&g->Scheme, &g->ActiveTheme);
337 if (g->ActiveTheme.ThemeActive == FALSE)
338 g->ClassicTheme = g->ActiveTheme;
339 }
340
342 g->bThemeChanged = FALSE;
343 g->bSchemeChanged = FALSE;
345 return TRUE;
346
347 case PSN_KILLACTIVE:
349 return TRUE;
350
351 case PSN_SETACTIVE:
352 if (g->Scheme.crColor[COLOR_DESKTOP] != g_GlobalData.desktop_color)
353 {
354 g->Scheme.crColor[COLOR_DESKTOP] = g_GlobalData.desktop_color;
356 }
357 break;
358 }
359 break;
360 }
361
362 return FALSE;
363}
INT_PTR CALLBACK AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: advappdlg.c:503
static void AppearancePage_UpdateThemePreview(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:16
static INT_PTR AppearancePage_OnInit(HWND hwndDlg)
Definition: appearance.c:97
static VOID AppearancePage_OnDestroy(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:197
static void AppearancePage_ShowSizes(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:81
static PVOID GetSelectedData(HWND hwndDlg, int nIDDlgItem)
Definition: appearance.c:203
static void AppearancePage_LoadSelectedScheme(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:35
static void AppearancePage_ShowColorSchemes(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:72
struct _THEME_STYLE * PTHEME_STYLE
VOID ApplyScheme(PCOLOR_SCHEME scheme, PTHEME_SELECTION pSelectedTheme)
struct _THEME * PTHEME
BOOL ActivateTheme(PTHEME_SELECTION pSelectedTheme)
INT_PTR CALLBACK EffAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: effappdlg.c:130
GLOBAL_DATA g_GlobalData
Definition: background.c:70
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HINSTANCE hApplet
Definition: access.c:17
#define IDC_APPEARANCE_VISUAL_STYLE
Definition: resource.h:102
#define IDC_APPEARANCE_ADVANCED
Definition: resource.h:101
#define IDC_APPEARANCE_EFFECTS
Definition: resource.h:100
#define IDC_APPEARANCE_COLORSCHEME
Definition: resource.h:98
#define IDD_ADVAPPEARANCE
Definition: resource.h:14
#define IDD_EFFAPPEARANCE
Definition: resource.h:15
#define IDC_APPEARANCE_SIZE
Definition: resource.h:103
GLboolean GLboolean g
Definition: glext.h:6204
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define LOWORD(l)
Definition: pedump.c:82
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSN_KILLACTIVE
Definition: prsht.h:116
#define PSN_APPLY
Definition: prsht.h:117
#define PSNRET_NOERROR
Definition: prsht.h:129
#define PSN_SETACTIVE
Definition: prsht.h:115
#define WM_NOTIFY
Definition: richedit.h:61
COLORREF desktop_color
Definition: desk.h:159
THEME_STYLE * SizesList
Definition: appearance.h:93
THEME_STYLE * ColoursList
Definition: appearance.h:92
UINT code
Definition: winuser.h:3159
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define HIWORD(l)
Definition: typedefs.h:247
LONG_PTR LPARAM
Definition: windef.h:208
#define DWLP_USER
Definition: winuser.h:872
#define WM_COMMAND
Definition: winuser.h:1740
#define DialogBoxParam
Definition: winuser.h:5773
#define WM_INITDIALOG
Definition: winuser.h:1739
#define IDOK
Definition: winuser.h:830
#define CBN_SELCHANGE
Definition: winuser.h:1979
#define COLOR_DESKTOP
Definition: winuser.h:914
struct tagNMHDR * LPNMHDR
HWND WINAPI GetParent(_In_ HWND)
#define DWLP_MSGRESULT
Definition: winuser.h:870
#define WM_DESTROY
Definition: winuser.h:1609
#define MAKEINTRESOURCE
Definition: winuser.h:591

◆ BackgroundPageProc()

INT_PTR CALLBACK BackgroundPageProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1179 of file background.c.

1183{
1185 struct GdiplusStartupInput gdipStartup;
1186
1188
1189 switch (uMsg)
1190 {
1191 case WM_INITDIALOG:
1194 gdipStartup.GdiplusVersion = 1;
1195 gdipStartup.DebugEventCallback = NULL;
1196 gdipStartup.SuppressBackgroundThread = FALSE;
1197 gdipStartup.SuppressExternalCodecs = FALSE;
1198 GdiplusStartup(&pData->gdipToken, &gdipStartup, NULL);
1199 InitBackgroundDialog(hwndDlg, pData);
1200 InitDesktopSettings(&pData->desktopData);
1201 break;
1202
1203 case WM_COMMAND:
1204 {
1205 DWORD controlId = LOWORD(wParam);
1207
1208 switch (controlId)
1209 {
1210 case IDC_COLOR_BUTTON:
1211 if (command == BN_CLICKED)
1212 OnColorButton(hwndDlg, pData);
1213 break;
1214
1215 case IDC_BROWSE_BUTTON:
1216 if (command == BN_CLICKED)
1217 OnBrowseButton(hwndDlg, pData);
1218 break;
1219
1221 if (command == CBN_SELCHANGE)
1222 {
1223 pData->placementSelection = (int)SendDlgItemMessage(hwndDlg, IDC_PLACEMENT_COMBO, CB_GETCURSEL, 0, 0);
1224
1226
1227 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1228 }
1229 break;
1230
1231 case IDC_DESKTOP_CUSTOM:
1232 if (command == BN_CLICKED)
1233 OnCustomButton(hwndDlg, pData);
1234 break;
1235 }
1236 } break;
1237
1238 case WM_DRAWITEM:
1239 {
1240 LPDRAWITEMSTRUCT drawItem;
1241 drawItem = (LPDRAWITEMSTRUCT)lParam;
1242
1243 if (drawItem->CtlID == IDC_BACKGROUND_PREVIEW)
1244 {
1245 DrawBackgroundPreview(drawItem, pData);
1246 }
1247
1248 }
1249 break;
1250
1251 case WM_NOTIFY:
1252 {
1253 LPNMHDR lpnm = (LPNMHDR)lParam;
1254
1255 switch(lpnm->code)
1256 {
1257 case PSN_APPLY:
1258 if (pData->bWallpaperChanged)
1260 if (pData->bClrBackgroundChanged)
1261 SetDesktopBackColor(hwndDlg, pData);
1262 if (pData->desktopData.bSettingsChanged)
1263 SetDesktopSettings(&pData->desktopData);
1265 return TRUE;
1266
1267 case LVN_ITEMCHANGED:
1268 {
1270
1271 if ((nm->uNewState & LVIS_SELECTED) == 0)
1272 return FALSE;
1273
1274 ListViewItemChanged(hwndDlg, pData, nm->iItem);
1275 }
1276 break;
1277 }
1278 }
1279 break;
1280
1281 case WM_DESTROY:
1282 if (pData->pWallpaperBitmap != NULL)
1283 DibFreeImage(pData->pWallpaperBitmap);
1284
1285 GdiplusShutdown(pData->gdipToken);
1287 break;
1288 }
1289
1290 return FALSE;
1291}
static VOID OnBrowseButton(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:609
static VOID InitBackgroundDialog(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:451
struct _BACKGROUND_DATA * PBACKGROUND_DATA
static VOID SetWallpaper(PBACKGROUND_DATA pData)
Definition: background.c:989
struct _BACKGROUND_DATA BACKGROUND_DATA
static VOID DrawBackgroundPreview(LPDRAWITEMSTRUCT draw, PBACKGROUND_DATA pData)
Definition: background.c:778
static VOID OnColorButton(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:525
static VOID ListViewItemChanged(HWND hwndDlg, PBACKGROUND_DATA pData, int itemIndex)
Definition: background.c:744
static VOID SetDesktopBackColor(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:1113
static VOID OnCustomButton(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:1146
VOID InitDesktopSettings(PDESKTOP_DATA pData)
Definition: desktop.c:63
VOID SetDesktopSettings(PDESKTOP_DATA pData)
Definition: desktop.c:181
VOID DibFreeImage(PDIBITMAP lpBitmap)
Definition: dibitmap.c:90
#define IDC_COLOR_BUTTON
Definition: resource.h:32
#define IDC_BACKGROUND_PREVIEW
Definition: resource.h:30
#define IDC_DESKTOP_CUSTOM
Definition: resource.h:36
#define IDC_PLACEMENT_COMBO
Definition: resource.h:33
#define IDC_BROWSE_BUTTON
Definition: resource.h:31
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
unsigned long DWORD
Definition: ntddk_ex.h:95
Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input, struct GdiplusStartupOutput *output)
Definition: gdiplus.c:81
void WINAPI GdiplusShutdown(ULONG_PTR)
#define LVIS_SELECTED
Definition: commctrl.h:2319
struct tagNMLISTVIEW * LPNMLISTVIEW
#define LVN_ITEMCHANGED
Definition: commctrl.h:3131
UINT uNewState
Definition: commctrl.h:3036
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
#define _T(x)
Definition: vfdio.h:22
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
#define HWND_BROADCAST
Definition: winuser.h:1204
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define WM_DRAWITEM
Definition: winuser.h:1645
#define WM_SETTINGCHANGE
Definition: winuser.h:1629
#define SendMessage
Definition: winuser.h:5852
#define BN_CLICKED
Definition: winuser.h:1925
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define CB_GETCURSEL
Definition: winuser.h:1943
#define SendDlgItemMessage
Definition: winuser.h:5851

◆ Control_RunDLLW()

VOID WINAPI Control_RunDLLW ( HWND  hWnd,
HINSTANCE  hInst,
LPCWSTR  cmd,
DWORD  nCmdShow 
)

Definition at line 1173 of file control.c.

1174{
1175 CPanel panel;
1176
1177 TRACE("(%p, %p, %s, 0x%08x)\n",
1178 hWnd, hInst, debugstr_w(cmd), nCmdShow);
1179
1180#ifndef __REACTOS__
1181 memset(&panel, 0, sizeof(panel));
1182 list_init( &panel.applets );
1183#endif
1184
1185 if (!cmd || !*cmd) {
1186 Control_DoWindow(&panel, hWnd, hInst);
1187 } else {
1188 Control_DoLaunch(&panel, hWnd, cmd);
1189 }
1190}
HWND hWnd
Definition: settings.c:17
static void list_init(struct list_entry *head)
Definition: list.h:51
static void Control_DoWindow(CPanel *panel, HWND hWnd, HINSTANCE hInst)
Definition: control.c:703
static void Control_DoLaunch(CPanel *panel, HWND hWnd, LPCWSTR wszCmd)
Definition: control.c:867
HINSTANCE hInst
Definition: dxdiag.c:13
#define debugstr_w
Definition: kernel32.h:32
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
Definition: cpanel.h:56
struct list applets
Definition: cpanel.h:57
Definition: ftp_var.h:139

Referenced by InstallScreenSaverW().

◆ CPlApplet()

LONG CALLBACK CPlApplet ( HWND  hwndCPl,
UINT  uMsg,
LPARAM  lParam1,
LPARAM  lParam2 
)

Definition at line 277 of file desk.c.

278{
279 UINT i = (UINT)lParam1;
280
281 switch (uMsg)
282 {
283 case CPL_INIT:
284 return TRUE;
285
286 case CPL_GETCOUNT:
287 return _countof(Applets);
288
289 case CPL_INQUIRE:
290 if (i < _countof(Applets))
291 {
292 CPLINFO *CPlInfo = (CPLINFO*)lParam2;
293 CPlInfo->lData = 0;
294 CPlInfo->idIcon = Applets[i].idIcon;
295 CPlInfo->idName = Applets[i].idName;
296 CPlInfo->idInfo = Applets[i].idDescription;
297 }
298 else
299 {
300 return TRUE;
301 }
302 break;
303
304 case CPL_DBLCLK:
305 if (i < _countof(Applets))
306 Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
307 else
308 return TRUE;
309 break;
310
311 case CPL_STARTWPARMSW:
312 if (i < _countof(Applets))
313 return Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
314 break;
315 }
316
317 return FALSE;
318}
#define CPL_INQUIRE
Definition: cpl.h:14
#define CPL_DBLCLK
Definition: cpl.h:16
#define CPL_STARTWPARMSW
Definition: cpl.h:21
#define CPL_INIT
Definition: cpl.h:12
#define CPL_GETCOUNT
Definition: cpl.h:13
APPLET Applets[]
Definition: desk.c:41
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: ndis.h:50
#define _countof(array)
Definition: sndvol32.h:70
int idDescription
Definition: hotplug.h:37
int idName
Definition: hotplug.h:36
int idIcon
Definition: hotplug.h:35
Definition: cpl.h:24
LONG_PTR lData
Definition: cpl.h:28
int idName
Definition: cpl.h:26
int idInfo
Definition: cpl.h:27
int idIcon
Definition: cpl.h:25

◆ DisplayApplet()

static LONG APIENTRY DisplayApplet ( HWND  hwnd,
UINT  uMsg,
LPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 153 of file desk.c.

154{
156 PROPSHEETHEADER psh;
157 HPSXA hpsxa = NULL;
158 UINT i;
159 LPWSTR *argv = NULL;
160 LPCWSTR pwszSelectedTab = NULL;
161 LPCWSTR pwszFile = NULL;
162 LPCWSTR pwszAction = NULL;
163 INT nPage = 0;
165
167
169
170 if (uMsg == CPL_STARTWPARMSW && lParam)
171 {
172 int argc;
173 int i;
174
175 nPage = _wtoi((PWSTR)lParam);
176
177#if 0
179#else
181#endif
182
183 if (argv && argc)
184 {
185 for (i = 0; i<argc; i++)
186 {
187#if 0
188 if (argv[i][0] == L'@')
189 pwszSelectedTab = &argv[i][1];
190#else
191 if (wcsncmp(argv[i], L"desk,@", 6) == 0)
192 pwszSelectedTab = &argv[i][6];
193#endif
194 else if (wcsncmp(argv[i], L"/Action:", 8) == 0)
195 pwszAction = &argv[i][8];
196 else if (wcsncmp(argv[i], L"/file:", 6) == 0)
197 pwszFile = &argv[i][6];
198 }
199 }
200 }
201
202 if(pwszAction && wcsncmp(pwszAction, L"ActivateMSTheme", 15) == 0)
203 {
204 ActivateThemeFile(pwszFile);
205 goto cleanup;
206 }
207
208 g_GlobalData.pwszFile = pwszFile;
209 g_GlobalData.pwszAction = pwszAction;
211
212 /* Initialize the monitor preview bitmap, used on multiple pages */
215 {
217
220 }
221
222 ZeroMemory(&psh, sizeof(psh));
223 psh.dwSize = sizeof(psh);
225 psh.hwndParent = hCPLWindow;
226 psh.hInstance = hApplet;
227 psh.pszIcon = MAKEINTRESOURCEW(IDC_DESK_ICON);
228 psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
229 psh.nPages = 0;
230 psh.nStartPage = 0;
231 psh.phpage = hpsp;
232 psh.pfnCallback = PropSheetProc;
233
234 /* Allow shell extensions to replace the background page */
236
237 for (i = 0; i < _countof(PropPages); i++)
238 {
239 if (pwszSelectedTab && wcsicmp(pwszSelectedTab, PropPages[i].Name) == 0)
240 psh.nStartPage = i;
241
242 /* Override the background page if requested by a shell extension */
243 if (PropPages[i].idDlg == IDD_BACKGROUND && hpsxa != NULL &&
245 {
246 /* The shell extension added one or more pages to replace the background page.
247 Don't create the built-in page anymore! */
248 continue;
249 }
250
252 }
253
254 /* NOTE: Don't call SHAddFromPropSheetExtArray here because this applet only allows
255 replacing the background page but not extending the applet by more pages */
256
257 if (nPage != 0 && psh.nStartPage == 0)
258 psh.nStartPage = nPage;
259
260 PropertySheet(&psh);
261
262cleanup:
264
265 if (hpsxa != NULL)
267
268 if (argv)
270
271 return TRUE;
272}
static int argc
Definition: ServiceArgs.c:12
BOOL ActivateThemeFile(LPCWSTR pwszFile)
Definition: theme.c:1015
#define CPLPAGE_DISPLAY_BACKGROUND
Definition: cplext.h:8
WORD idDlg
Definition: desk.c:121
static BOOL InitPropSheetPage(PROPSHEETHEADER *ppsh, WORD idDlg, DLGPROC DlgProc, LPFNPSPCALLBACK pfnCallback)
Definition: desk.c:92
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
Definition: desk.c:135
DLGPROC DlgProc
Definition: desk.c:122
static const struct @220 PropPages[]
static BOOL CALLBACK DisplayAppletPropSheetAddPage(HPROPSHEETPAGE hpage, LPARAM lParam)
Definition: desk.c:79
HWND hCPLWindow
Definition: desk.c:38
HINSTANCE hApplet
Definition: desk.c:37
#define MAX_DESK_PAGES
Definition: desk.h:81
#define IDS_CPLNAME
Definition: resource.h:8
#define IDC_MONITOR
Definition: resource.h:29
#define IDC_DESK_ICON
Definition: resource.h:4
#define IDD_BACKGROUND
Definition: resource.h:10
#define wcsicmp
Definition: compat.h:15
static void cleanup(void)
Definition: main.c:1335
LPWSTR WINAPI GetCommandLineW(VOID)
Definition: proc.c:2013
pKey DeleteObject()
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
#define TEXT(s)
Definition: k32.h:26
if(dx< 0)
Definition: linetemp.h:194
#define argv
Definition: mplay32.c:18
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define L(x)
Definition: ntvdm.h:50
#define PROPSHEETHEADER
Definition: prsht.h:392
#define PSH_PROPTITLE
Definition: prsht.h:40
#define PSH_USECALLBACK
Definition: prsht.h:48
#define PropertySheet
Definition: prsht.h:400
#define PSH_USEICONID
Definition: prsht.h:42
#define REGSTR_PATH_CONTROLSFOLDER
Definition: regstr.h:76
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
LPWSTR *WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int *numargs)
Definition: shell32_main.c:80
void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa)
Definition: shellord.c:2190
UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa, UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam)
Definition: shellord.c:2159
HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface)
Definition: shellord.c:2043
Definition: bl.h:1331
LONG bmMonHeight
Definition: desk.h:164
LONG bmMonWidth
Definition: desk.h:163
LPCWSTR pwszFile
Definition: desk.h:160
LPCWSTR pwszAction
Definition: desk.h:161
HBITMAP hMonitorBitmap
Definition: desk.h:162
Definition: uimain.c:89
uint16_t * PWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
Definition: wdfinterrupt.h:458
#define ZeroMemory
Definition: winbase.h:1712
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
DWORD WINAPI GetSysColor(_In_ int)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2194
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ DisplayAppletPropSheetAddPage()

static BOOL CALLBACK DisplayAppletPropSheetAddPage ( HPROPSHEETPAGE  hpage,
LPARAM  lParam 
)
static

Definition at line 79 of file desk.c.

80{
82 if (ppsh != NULL && ppsh->nPages < MAX_DESK_PAGES)
83 {
84 ppsh->phpage[ppsh->nPages++] = hpage;
85 return TRUE;
86 }
87
88 return FALSE;
89}

Referenced by DisplayApplet(), and InitPropSheetPage().

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hInstDLL,
DWORD  dwReason,
LPVOID  lpvReserved 
)

Definition at line 460 of file desk.c.

461{
463
464 switch (dwReason)
465 {
468 RegisterPreviewControl(hInstDLL);
469// case DLL_THREAD_ATTACH:
470 hApplet = hInstDLL;
471 break;
472
474 UnregisterPreviewControl(hInstDLL);
476 break;
477 }
478
479 return TRUE;
480}
DWORD dwReason
Definition: misc.cpp:154
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
Definition: compobj.c:2002
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
static IN DWORD IN LPVOID lpvReserved
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:278
BOOL RegisterPreviewControl(IN HINSTANCE hInstance)
Definition: preview.c:539
VOID UnregisterPreviewControl(IN HINSTANCE hInstance)
Definition: preview.c:555

◆ InitPropSheetPage()

static BOOL InitPropSheetPage ( PROPSHEETHEADER ppsh,
WORD  idDlg,
DLGPROC  DlgProc,
LPFNPSPCALLBACK  pfnCallback 
)
static

Definition at line 92 of file desk.c.

93{
94 HPROPSHEETPAGE hPage;
95 PROPSHEETPAGE psp;
96
97 if (ppsh->nPages < MAX_DESK_PAGES)
98 {
99 ZeroMemory(&psp, sizeof(psp));
100 psp.dwSize = sizeof(psp);
101 psp.dwFlags = PSP_DEFAULT;
102 if (pfnCallback != NULL)
103 psp.dwFlags |= PSP_USECALLBACK;
104 psp.hInstance = hApplet;
105 psp.pszTemplate = MAKEINTRESOURCE(idDlg);
106 psp.pfnDlgProc = DlgProc;
107 psp.pfnCallback = pfnCallback;
108
109 hPage = CreatePropertySheetPage(&psp);
110 if (hPage != NULL)
111 {
112 return DisplayAppletPropSheetAddPage(hPage, (LPARAM)ppsh);
113 }
114 }
115
116 return FALSE;
117}
#define CreatePropertySheetPage
Definition: prsht.h:399
#define PSP_DEFAULT
Definition: prsht.h:22
#define PSP_USECALLBACK
Definition: prsht.h:30
#define PROPSHEETPAGE
Definition: prsht.h:389

Referenced by DisplayApplet().

◆ InstallScreenSaverA()

void WINAPI InstallScreenSaverA ( IN HWND  hWindow,
IN HANDLE  hInstance,
IN LPCSTR  pszFile,
IN UINT  nCmdShow 
)

Definition at line 416 of file desk.c.

421{
422 LPWSTR lpwString;
423 int nLength;
424
425 if (!pszFile)
426 {
427 DPRINT1("InstallScreenSaver() null file\n");
429 return;
430 }
431
432 /* Convert the string to unicode */
433 lpwString = NULL;
434 nLength = MultiByteToWideChar(CP_ACP, 0, pszFile, -1, NULL, 0);
435 if (nLength != 0)
436 {
437 lpwString = LocalAlloc(LMEM_FIXED, nLength * sizeof(WCHAR));
438 if (lpwString)
439 {
440 if (!MultiByteToWideChar(CP_ACP, 0, pszFile, -1, lpwString, nLength))
441 {
442 LocalFree(lpwString);
443 lpwString = NULL;
444 }
445 }
446 }
447 if (!lpwString)
448 {
449 DPRINT1("InstallScreenSaver() not enough memory to convert string to unicode\n");
450 return;
451 }
452
453 /* Call the unicode function */
454 InstallScreenSaverW(hWindow, hInstance, lpwString, nCmdShow);
455
456 LocalFree(lpwString);
457}
#define DPRINT1
Definition: precomp.h:8
HINSTANCE hInstance
Definition: charmap.c:19
void WINAPI InstallScreenSaverW(IN HWND hWindow, IN HANDLE hInstance, IN LPCWSTR pszFile, IN UINT nCmdShow)
Definition: desk.c:322
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:109
#define SetLastError(x)
Definition: compat.h:752
#define MultiByteToWideChar
Definition: compat.h:110
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1390
#define LMEM_FIXED
Definition: winbase.h:368
_In_ DWORD nLength
Definition: wincon.h:473
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ InstallScreenSaverW()

void WINAPI InstallScreenSaverW ( IN HWND  hWindow,
IN HANDLE  hInstance,
IN LPCWSTR  pszFile,
IN UINT  nCmdShow 
)

Definition at line 322 of file desk.c.

327{
328 LRESULT rc;
329 HKEY regKey;
330 INT Timeout;
331#ifdef CHECK_SCR_FULL_PATH
333 WIN32_FIND_DATAW fdFile;
334#endif
335 DWORD dwLen;
336 WCHAR szFullPath[MAX_PATH];
337
338 if (!pszFile)
339 {
340 DPRINT1("InstallScreenSaver() null file\n");
342 return;
343 }
344 DPRINT("InstallScreenSaver() Installing screensaver %ls\n", pszFile);
345
346#ifdef CHECK_SCR_FULL_PATH
347 /* Retrieve the actual path to the file and verify whether it exists */
348 dwLen = GetFullPathNameW(pszFile, _countof(szFullPath), szFullPath, NULL);
349 if (dwLen == 0 || dwLen > _countof(szFullPath))
350 {
351 DPRINT1("InstallScreenSaver() File %ls not accessible\n", pszFile);
352 return;
353 }
354 hFile = FindFirstFile(szFullPath, &fdFile);
356 {
357 DPRINT1("InstallScreenSaver() File %ls not found\n", pszFile);
358 return;
359 }
361 /* Use the full file path from now on */
362 pszFile = szFullPath;
363#endif
364
366 L"Control Panel\\Desktop",
367 0,
369 &regKey);
370 if (rc == ERROR_SUCCESS)
371 {
372 /* Set the screensaver */
373 SIZE_T Length = (wcslen(pszFile) + 1) * sizeof(WCHAR);
374 rc = RegSetValueExW(regKey,
375 L"SCRNSAVE.EXE",
376 0,
377 REG_SZ,
378 (PBYTE)pszFile,
379 (DWORD)Length);
380 RegCloseKey(regKey);
381 }
382 if (rc != ERROR_SUCCESS)
383 {
384 DPRINT1("InstallScreenSaver() Could not change the current screensaver\n");
385 return;
386 }
387
389
390 /* If no screensaver timeout is present, default to 10 minutes (600 seconds) */
391 Timeout = 0;
394
395 /* Retrieve the name of this current instance of desk.cpl */
396 dwLen = GetModuleFileNameW(hApplet, szFullPath, _countof(szFullPath));
397 if ((dwLen == 0) || (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
398 {
399 /* We failed, copy the default value */
400 StringCchCopyW(szFullPath, _countof(szFullPath), L"desk.cpl");
401 }
402
403 /* Build the desk.cpl command-line to start the ScreenSaver page.
404 * Equivalent to: "desk.cpl,ScreenSaver,@ScreenSaver" */
405 rc = StringCchCatW(szFullPath, _countof(szFullPath), L",,1");
406 if (FAILED(rc))
407 return;
408
409 /* Open the ScreenSaver page in this desk.cpl instance */
410 DPRINT("InstallScreenSaver() Starting '%ls'\n", szFullPath);
411 Control_RunDLLW(hWindow, hInstance, szFullPath, nCmdShow);
412}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
#define ERROR_SUCCESS
Definition: deptool.c:10
VOID WINAPI Control_RunDLLW(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow)
Definition: control.c:1173
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define MAX_PATH
Definition: compat.h:34
BOOL WINAPI FindClose(HANDLE hFindFile)
Definition: find.c:502
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1106
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define FAILED(hr)
Definition: intsafe.h:51
#define REG_SZ
Definition: layer.c:22
_In_ HANDLE hFile
Definition: mswsock.h:90
#define KEY_SET_VALUE
Definition: nt_native.h:1017
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
BYTE * PBYTE
Definition: pedump.c:66
static ULONG Timeout
Definition: ping.c:61
#define DPRINT
Definition: sndvol32.h:73
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:325
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
ULONG_PTR SIZE_T
Definition: typedefs.h:80
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define FindFirstFile
Definition: winbase.h:3782
LONG_PTR LRESULT
Definition: windef.h:209
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define SPI_SETSCREENSAVEACTIVE
Definition: winuser.h:1366
#define SPIF_UPDATEINIFILE
Definition: winuser.h:1571
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define SPI_SETSCREENSAVETIMEOUT
Definition: winuser.h:1364
#define SPI_GETSCREENSAVETIMEOUT
Definition: winuser.h:1363

Referenced by InstallScreenSaverA().

◆ LoadPopupMenu()

HMENU LoadPopupMenu ( IN HINSTANCE  hInstance,
IN LPCTSTR  lpMenuName 
)

Definition at line 52 of file desk.c.

54{
55 HMENU hMenu, hSubMenu = NULL;
56
57 hMenu = LoadMenu(hInstance,
58 lpMenuName);
59
60 if (hMenu != NULL)
61 {
62 hSubMenu = GetSubMenu(hMenu,
63 0);
64 if (hSubMenu != NULL &&
65 !RemoveMenu(hMenu,
66 0,
68 {
69 hSubMenu = NULL;
70 }
71
72 DestroyMenu(hMenu);
73 }
74
75 return hSubMenu;
76}
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define MF_BYPOSITION
Definition: winuser.h:203
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define LoadMenu
Definition: winuser.h:5826
BOOL WINAPI DestroyMenu(_In_ HMENU)

◆ PropSheetProc()

static int CALLBACK PropSheetProc ( HWND  hwndDlg,
UINT  uMsg,
LPARAM  lParam 
)
static

Definition at line 135 of file desk.c.

136{
137 // NOTE: This callback is needed to set large icon correctly.
138 HICON hIcon;
139 switch (uMsg)
140 {
141 case PSCB_INITIALIZED:
142 {
144 SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
145 break;
146 }
147 }
148 return 0;
149}
static HICON
Definition: imagelist.c:84
HICON hIcon
Definition: msconfig.c:44
#define PSCB_INITIALIZED
Definition: prsht.h:75
#define ICON_BIG
Definition: tnclass.cpp:51
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2106
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by DisplayApplet().

◆ ScreenSaverPageProc()

INT_PTR CALLBACK ScreenSaverPageProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 783 of file screensaver.c.

787{
788 PDATA pData;
789
791
792 switch (uMsg)
793 {
794 case WM_INITDIALOG:
795 {
796 OnInitDialog(hwndDlg, pData);
797 break;
798 }
799
800 case WM_DESTROY:
801 {
802 if (pData->ScreenSaverPreviewParent)
803 {
806 (LONG_PTR)pData->OldPreviewProc);
807 DestroyWindow(pData->ScreenSaverPreviewParent);
808 pData->ScreenSaverPreviewParent = NULL;
809 }
811 if (pData->PrevWindowPi.hProcess)
812 {
813 TerminateProcess(pData->PrevWindowPi.hProcess, 0);
814 CloseHandle(pData->PrevWindowPi.hProcess);
815 CloseHandle(pData->PrevWindowPi.hThread);
816 }
818 break;
819 }
820
821 case WM_ENDSESSION:
822 {
824 break;
825 }
826
827 case WM_DRAWITEM:
828 {
829 LPDRAWITEMSTRUCT lpDrawItem;
830 lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
831
832 if (lpDrawItem->CtlID == IDC_SCREENS_PREVIEW)
833 ShowScreenSaverPreview(lpDrawItem, pData);
834 break;
835 }
836
837 case WM_COMMAND:
838 {
839 DWORD controlId = LOWORD(wParam);
841
842 switch (controlId)
843 {
844 case IDC_SCREENS_LIST:
845 {
847 {
848 SelectionChanged(hwndDlg, pData);
850 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
851 }
852 break;
853 }
854
856 {
857 if (command == EN_CHANGE)
858 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
859 break;
860 }
861
862 case IDC_SCREENS_POWER_BUTTON: // Start Powercfg.Cpl
863 {
864 if (command == BN_CLICKED)
865 WinExec("rundll32 shell32.dll,Control_RunDLL powercfg.cpl",SW_SHOWNORMAL);
866 break;
867 }
868
869 case IDC_SCREENS_TESTSC: // Screensaver Preview
870 {
871 if (command == BN_CLICKED)
872 {
873 ScreenSaverPreview(hwndDlg, pData);
875 }
876 break;
877 }
878
879 case IDC_SCREENS_SETTINGS: // Screensaver Settings
880 {
881 if (command == BN_CLICKED)
882 ScreenSaverConfig(hwndDlg, pData);
883 break;
884 }
885
886 case IDC_SCREENS_USEPASSCHK: // Screensaver Is Secure
887 {
888 if (command == BN_CLICKED)
889 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
890 break;
891 }
892 }
893 break;
894 }
895
896 case WM_NOTIFY:
897 {
898 LPNMHDR lpnm = (LPNMHDR)lParam;
899
900 switch(lpnm->code)
901 {
902 case PSN_APPLY:
903 {
904 SetScreenSaver(hwndDlg, pData);
905 return TRUE;
906 }
907
908 case PSN_SETACTIVE:
909 {
910 /* Enable screensaver preview support */
912 break;
913 }
914
915 case PSN_KILLACTIVE:
916 {
917 /* Kill running preview screensaver */
918 if (pData->PrevWindowPi.hProcess)
919 {
920 TerminateProcess(pData->PrevWindowPi.hProcess, 0);
921 CloseHandle(pData->PrevWindowPi.hProcess);
922 CloseHandle(pData->PrevWindowPi.hThread);
923 pData->PrevWindowPi.hThread = pData->PrevWindowPi.hProcess = NULL;
924 }
925 break;
926 }
927 }
928 }
929 break;
930 }
931
932 return FALSE;
933}
#define IDC_SCREENS_PREVIEW
Definition: resource.h:39
#define IDC_SCREENS_USEPASSCHK
Definition: resource.h:44
#define IDC_SCREENS_TIMEDELAY
Definition: resource.h:45
#define IDC_SCREENS_POWER_BUTTON
Definition: resource.h:41
#define IDC_SCREENS_LIST
Definition: resource.h:40
#define IDC_SCREENS_TESTSC
Definition: resource.h:43
#define IDC_SCREENS_SETTINGS
Definition: resource.h:42
static VOID ShowScreenSaverPreview(IN LPDRAWITEMSTRUCT draw, IN PDATA pData)
Definition: screensaver.c:137
static VOID SelectionChanged(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:84
static VOID ScreenSaverPreview(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:323
static VOID SetScreenSaver(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:590
static VOID SetScreenSaverPreviewBox(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:178
struct _DATA * PDATA
static BOOL OnInitDialog(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:657
static VOID ScreenSaverConfig(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:271
static const TCHAR szPreviewWndClass[]
Definition: screensaver.c:15
#define CloseHandle
Definition: compat.h:739
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
Definition: proc.c:1532
UINT WINAPI DECLSPEC_HOTPATCH WinExec(LPCSTR lpCmdLine, UINT uCmdShow)
Definition: proc.c:4773
#define GWLP_WNDPROC
Definition: treelist.c:66
#define SW_SHOWNORMAL
Definition: winuser.h:770
#define UnregisterClass
Definition: winuser.h:5870
#define WM_ENDSESSION
Definition: winuser.h:1627
BOOL WINAPI DestroyWindow(_In_ HWND)
#define EN_CHANGE
Definition: winuser.h:2022

◆ SettingsPageCallbackProc()

UINT CALLBACK SettingsPageCallbackProc ( HWND  hwnd,
UINT  uMsg,
LPPROPSHEETPAGE  ppsp 
)

Definition at line 689 of file settings.c.

690{
691 UINT Ret = 0;
692
693 switch (uMsg)
694 {
695 case PSPCB_CREATE:
697 break;
698
699 case PSPCB_RELEASE:
701 break;
702 }
703
704 return Ret;
705}
VOID UnregisterMonitorSelectionControl(IN HINSTANCE hInstance)
Definition: monslctl.c:1655
BOOL RegisterMonitorSelectionControl(IN HINSTANCE hInstance)
Definition: monslctl.c:1638
#define PSPCB_CREATE
Definition: prsht.h:38
#define PSPCB_RELEASE
Definition: prsht.h:37

◆ SettingsPageProc()

INT_PTR CALLBACK SettingsPageProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 613 of file settings_page.c.

614{
615 switch (uMsg)
616 {
617 case WM_INITDIALOG:
618 OnInitSettingsPage(hwndDlg);
619 return TRUE;
620
621 case WM_DESTROY:
622 OnDestroySettingsPage(hwndDlg);
623 break;
624
625 case WM_COMMAND:
627 break;
628
629 case WM_NOTIFY:
630 return OnNotifySettingsPage(hwndDlg, lParam);
631 }
632
633 return FALSE;
634}
static INT_PTR OnNotifySettingsPage(HWND hwndDlg, LPARAM lParam)
static VOID OnInitSettingsPage(HWND hwndDlg)
static VOID OnDestroySettingsPage(HWND hwndDlg)
VOID OnCommandSettingsPage(HWND hwndDlg, WPARAM wParam)

Referenced by SystemApplet().

◆ ThemesPageProc()

INT_PTR CALLBACK ThemesPageProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1065 of file theme.c.

1066{
1067 LPNMHDR lpnm;
1068
1069 switch (uMsg)
1070 {
1071 case WM_INITDIALOG:
1072 break;
1073
1074 case WM_COMMAND:
1075 break;
1076
1077 case WM_NOTIFY:
1078 lpnm = (LPNMHDR)lParam;
1079 switch (lpnm->code)
1080 {
1081 case PSN_APPLY:
1083 return TRUE;
1084 }
1085 break;
1086
1087 case WM_DESTROY:
1088 break;
1089 }
1090
1091 return FALSE;
1092}

Variable Documentation

◆ Applets

APPLET Applets[]
Initial value:
=
{
{
}
}
static LONG APIENTRY DisplayApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
Definition: desk.c:153
#define IDS_CPLDESCRIPTION
Definition: resource.h:9

Definition at line 41 of file desk.c.

Referenced by CPlApplet().

◆ Callback

Definition at line 123 of file desk.c.

◆ DlgProc

◆ hApplet

HINSTANCE hApplet = NULL

Definition at line 37 of file desk.c.

Referenced by DisplayApplet(), DllMain(), InitPropSheetPage(), InstallScreenSaverW(), and PropSheetProc().

◆ hCPLWindow

HWND hCPLWindow = NULL

Definition at line 38 of file desk.c.

Referenced by DisplayApplet(), and LoadSchemeFromTheme().

◆ idDlg

◆ Name

Definition at line 124 of file desk.c.

◆ 

const struct { ... } PropPages[]
Initial value:
=
{
{ IDD_SCREENSAVER, ScreenSaverPageProc, NULL, L"Screen Saver" },
}
INT_PTR CALLBACK AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: appearance.c:216
INT_PTR CALLBACK SettingsPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR CALLBACK ScreenSaverPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: screensaver.c:783
INT_PTR CALLBACK BackgroundPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: background.c:1179
UINT CALLBACK SettingsPageCallbackProc(HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp)
Definition: settings.c:689
#define IDD_SETTINGS
Definition: resource.h:13
#define IDD_SCREENSAVER
Definition: resource.h:11
#define IDD_APPEARANCE
Definition: resource.h:12

Referenced by DisplayApplet().