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

Go to the source code of this file.

Macros

#define NUM_APPLETS   (1)
 

Functions

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 = 0
 
HWND hCPLWindow
 
APPLET Applets [NUM_APPLETS]
 
struct {
   WORD   idDlg
 
   DLGPROC   DlgProc
 
   LPFNPSPCALLBACK   Callback
 
   LPWSTR   Name
 
PropPages []
 

Macro Definition Documentation

◆ NUM_APPLETS

#define NUM_APPLETS   (1)

Definition at line 15 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 
262  if (HIWORD(wParam) == CBN_SELCHANGE)
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 
281  if (HIWORD(wParam) == CBN_SELCHANGE)
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 
307  case IDC_APPEARANCE_SIZE:
308  if (HIWORD(wParam) == CBN_SELCHANGE)
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 }
BOOL ActivateTheme(PTHEME_SELECTION pSelectedTheme)
INT_PTR CALLBACK EffAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: effappdlg.c:130
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
#define IDC_APPEARANCE_ADVANCED
Definition: resource.h:97
static VOID AppearancePage_OnDestroy(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:197
static void AppearancePage_ShowColorSchemes(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:72
static PVOID GetSelectedData(HWND hwndDlg, int nIDDlgItem)
Definition: appearance.c:203
COLORREF desktop_color
Definition: desk.h:106
#define IDC_APPEARANCE_COLORSCHEME
Definition: resource.h:94
HINSTANCE hApplet
Definition: access.c:17
#define COLOR_DESKTOP
Definition: winuser.h:904
#define PSN_APPLY
Definition: prsht.h:117
THEME_STYLE * SizesList
Definition: appearance.h:93
#define IDC_APPEARANCE_SIZE
Definition: resource.h:99
#define PSN_SETACTIVE
Definition: prsht.h:115
#define SetWindowLongPtr
Definition: treelist.c:70
WPARAM wParam
Definition: combotst.c:138
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
UINT code
Definition: winuser.h:3134
#define PSN_KILLACTIVE
Definition: prsht.h:116
struct _THEME_STYLE * PTHEME_STYLE
static void AppearancePage_UpdateThemePreview(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:16
INT_PTR CALLBACK AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: advappdlg.c:504
smooth NULL
Definition: ftsmooth.c:416
#define IDC_APPEARANCE_VISUAL_STYLE
Definition: resource.h:98
LONG_PTR LPARAM
Definition: windef.h:208
static void AppearancePage_LoadSelectedScheme(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:35
#define WM_DESTROY
Definition: winuser.h:1591
GLboolean GLboolean g
Definition: glext.h:6204
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSNRET_NOERROR
Definition: prsht.h:129
#define DialogBoxParam
Definition: winuser.h:5739
#define DWLP_USER
Definition: winuser.h:866
VOID ApplyScheme(PCOLOR_SCHEME scheme, PTHEME_SELECTION pSelectedTheme)
static INT_PTR AppearancePage_OnInit(HWND hwndDlg)
Definition: appearance.c:97
#define WM_COMMAND
Definition: winuser.h:1722
THEME_STYLE * ColoursList
Definition: appearance.h:92
HWND WINAPI GetParent(_In_ HWND)
#define IDD_ADVAPPEARANCE
Definition: resource.h:14
static void AppearancePage_ShowSizes(HWND hwndDlg, GLOBALS *g)
Definition: appearance.c:81
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define CBN_SELCHANGE
Definition: winuser.h:1961
GLOBAL_DATA g_GlobalData
Definition: background.c:84
#define HIWORD(l)
Definition: typedefs.h:246
#define IDC_APPEARANCE_EFFECTS
Definition: resource.h:96
#define IDD_EFFAPPEARANCE
Definition: resource.h:15
#define GetWindowLongPtr
Definition: treelist.c:73
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
struct _THEME * PTHEME
#define WM_NOTIFY
Definition: richedit.h:61

◆ BackgroundPageProc()

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

Definition at line 1170 of file background.c.

1174 {
1176  struct GdiplusStartupInput gdipStartup;
1177 
1179 
1180  switch (uMsg)
1181  {
1182  case WM_INITDIALOG:
1185  gdipStartup.GdiplusVersion = 1;
1186  gdipStartup.DebugEventCallback = NULL;
1187  gdipStartup.SuppressBackgroundThread = FALSE;
1188  gdipStartup.SuppressExternalCodecs = FALSE;
1189  GdiplusStartup(&pData->gdipToken, &gdipStartup, NULL);
1190  InitBackgroundDialog(hwndDlg, pData);
1191  break;
1192 
1193  case WM_COMMAND:
1194  {
1195  DWORD controlId = LOWORD(wParam);
1197 
1198  switch (controlId)
1199  {
1200  case IDC_COLOR_BUTTON:
1201  if (command == BN_CLICKED)
1202  OnColorButton(hwndDlg, pData);
1203  break;
1204 
1205  case IDC_BROWSE_BUTTON:
1206  if (command == BN_CLICKED)
1207  OnBrowseButton(hwndDlg, pData);
1208  break;
1209 
1210  case IDC_PLACEMENT_COMBO:
1211  if (command == CBN_SELCHANGE)
1212  {
1213  pData->placementSelection = (int)SendDlgItemMessage(hwndDlg, IDC_PLACEMENT_COMBO, CB_GETCURSEL, 0, 0);
1214 
1216 
1217  PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1218  }
1219  break;
1220  }
1221  } break;
1222 
1223  case WM_DRAWITEM:
1224  {
1225  LPDRAWITEMSTRUCT drawItem;
1226  drawItem = (LPDRAWITEMSTRUCT)lParam;
1227 
1228  if (drawItem->CtlID == IDC_BACKGROUND_PREVIEW)
1229  {
1230  DrawBackgroundPreview(drawItem, pData);
1231  }
1232 
1233  }
1234  break;
1235 
1236  case WM_NOTIFY:
1237  {
1238  LPNMHDR lpnm = (LPNMHDR)lParam;
1239 
1240  switch(lpnm->code)
1241  {
1242  case PSN_APPLY:
1243  if (pData->bWallpaperChanged)
1245  if (pData->bClrBackgroundChanged)
1246  SetDesktopBackColor(hwndDlg, pData);
1248  return TRUE;
1249 
1250  case LVN_ITEMCHANGED:
1251  {
1253 
1254  if ((nm->uNewState & LVIS_SELECTED) == 0)
1255  return FALSE;
1256 
1257  ListViewItemChanged(hwndDlg, pData, nm->iItem);
1258  }
1259  break;
1260  }
1261  }
1262  break;
1263 
1264  case WM_DESTROY:
1265  if (pData->pWallpaperBitmap != NULL)
1266  DibFreeImage(pData->pWallpaperBitmap);
1267 
1268  DeleteObject(pData->hBitmap);
1269  GdiplusShutdown(pData->gdipToken);
1270  HeapFree(GetProcessHeap(), 0, pData);
1271  break;
1272  }
1273 
1274  return FALSE;
1275 }
#define IDC_BACKGROUND_PREVIEW
Definition: resource.h:29
#define IDC_BROWSE_BUTTON
Definition: resource.h:30
#define TRUE
Definition: types.h:120
static VOID SetWallpaper(PBACKGROUND_DATA pData)
Definition: background.c:1013
VOID DibFreeImage(PDIBITMAP lpBitmap)
Definition: dibitmap.c:90
UINT uNewState
Definition: commctrl.h:3032
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
struct _BACKGROUND_DATA * PBACKGROUND_DATA
#define LVN_ITEMCHANGED
Definition: commctrl.h:3127
struct _BACKGROUND_DATA BACKGROUND_DATA
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
#define SendDlgItemMessage
Definition: winuser.h:5817
#define PSN_APPLY
Definition: prsht.h:117
#define SetWindowLongPtr
Definition: treelist.c:70
#define CB_GETCURSEL
Definition: winuser.h:1925
WPARAM wParam
Definition: combotst.c:138
struct tagNMHDR * LPNMHDR
#define WM_SETTINGCHANGE
Definition: winuser.h:1611
UINT code
Definition: winuser.h:3134
static VOID OnColorButton(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:549
smooth NULL
Definition: ftsmooth.c:416
#define LVIS_SELECTED
Definition: commctrl.h:2315
LONG_PTR LPARAM
Definition: windef.h:208
#define WM_DESTROY
Definition: winuser.h:1591
#define IDC_COLOR_BUTTON
Definition: resource.h:31
#define _T(x)
Definition: vfdio.h:22
#define GetProcessHeap()
Definition: compat.h:404
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
void WINAPI GdiplusShutdown(ULONG_PTR)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input, struct GdiplusStartupOutput *output)
Definition: gdiplus.c:81
#define BN_CLICKED
Definition: winuser.h:1907
unsigned long DWORD
Definition: ntddk_ex.h:95
#define DWLP_USER
Definition: winuser.h:866
static VOID ListViewItemChanged(HWND hwndDlg, PBACKGROUND_DATA pData, int itemIndex)
Definition: background.c:768
#define WM_COMMAND
Definition: winuser.h:1722
static VOID SetDesktopBackColor(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:1137
HWND WINAPI GetParent(_In_ HWND)
struct tagNMLISTVIEW * LPNMLISTVIEW
static VOID InitBackgroundDialog(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:465
static VOID OnBrowseButton(HWND hwndDlg, PBACKGROUND_DATA pData)
Definition: background.c:633
static VOID DrawBackgroundPreview(LPDRAWITEMSTRUCT draw, PBACKGROUND_DATA pData)
Definition: background.c:802
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
#define CBN_SELCHANGE
Definition: winuser.h:1961
#define WM_DRAWITEM
Definition: winuser.h:1627
#define SendMessage
Definition: winuser.h:5818
#define IDC_PLACEMENT_COMBO
Definition: resource.h:32
#define HIWORD(l)
Definition: typedefs.h:246
#define GetWindowLongPtr
Definition: treelist.c:73
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
#define HWND_BROADCAST
Definition: winuser.h:1190
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define HeapFree(x, y, z)
Definition: compat.h:403
#define WM_NOTIFY
Definition: richedit.h:61
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ CPlApplet()

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

Definition at line 256 of file desk.c.

257 {
258  int i = (int)lParam1;
259 
260  switch (uMsg)
261  {
262  case CPL_INIT:
263  return TRUE;
264 
265  case CPL_GETCOUNT:
266  return NUM_APPLETS;
267 
268  case CPL_INQUIRE:
269  {
270  CPLINFO *CPlInfo = (CPLINFO*)lParam2;
271  CPlInfo->lData = 0;
272  CPlInfo->idIcon = Applets[i].idIcon;
273  CPlInfo->idName = Applets[i].idName;
274  CPlInfo->idInfo = Applets[i].idDescription;
275  }
276  break;
277 
278  case CPL_DBLCLK:
279  Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
280  break;
281 
282  case CPL_STARTWPARMSW:
283  return Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
284  }
285 
286  return FALSE;
287 }
#define TRUE
Definition: types.h:120
Definition: cpl.h:24
int idName
Definition: hotplug.h:36
int idIcon
Definition: hotplug.h:35
int idInfo
Definition: cpl.h:27
int idIcon
Definition: cpl.h:25
int idDescription
Definition: hotplug.h:37
#define CPL_DBLCLK
Definition: cpl.h:16
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
APPLET_PROC AppletProc
Definition: hotplug.h:38
#define CPL_STARTWPARMSW
Definition: cpl.h:21
#define CPL_INIT
Definition: cpl.h:12
APPLET Applets[NUM_APPLETS]
Definition: desk.c:30
#define CPL_INQUIRE
Definition: cpl.h:14
LONG_PTR lData
Definition: cpl.h:28
int idName
Definition: cpl.h:26
#define NUM_APPLETS
Definition: desk.c:15
#define CPL_GETCOUNT
Definition: cpl.h:13
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ DisplayApplet()

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

Definition at line 142 of file desk.c.

143 {
145  PROPSHEETHEADER psh;
146  HPSXA hpsxa = NULL;
147  TCHAR Caption[1024];
148  UINT i;
149  LPWSTR *argv = NULL;
150  LPCWSTR pwszSelectedTab = NULL;
151  LPCWSTR pwszFile = NULL;
152  LPCWSTR pwszAction = NULL;
153  INT nPage = 0;
154 
156 
157  hCPLWindow = hwnd;
158 
159  if (uMsg == CPL_STARTWPARMSW && lParam)
160  {
161  int argc;
162  int i;
163 
164  nPage = _wtoi((PWSTR)lParam);
165 
166 #if 0
168 #else
170 #endif
171 
172  if (argv && argc)
173  {
174  for (i = 0; i<argc; i++)
175  {
176 #if 0
177  if (argv[i][0] == L'@')
178  pwszSelectedTab = &argv[i][1];
179 #else
180  if (wcsncmp(argv[i], L"desk,@", 6) == 0)
181  pwszSelectedTab = &argv[i][6];
182 #endif
183  else if (wcsncmp(argv[i], L"/Action:", 8) == 0)
184  pwszAction = &argv[i][8];
185  else if (wcsncmp(argv[i], L"/file:", 6) == 0)
186  pwszFile = &argv[i][6];
187  }
188  }
189  }
190 
191  if(pwszAction && wcsncmp(pwszAction, L"ActivateMSTheme", 15) == 0)
192  {
193  ActivateThemeFile(pwszFile);
194  goto cleanup;
195  }
196 
197  g_GlobalData.pwszFile = pwszFile;
198  g_GlobalData.pwszAction = pwszAction;
200 
201  LoadString(hApplet, IDS_CPLNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
202 
203  ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
204  psh.dwSize = sizeof(PROPSHEETHEADER);
205  psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE | PSH_USEICONID;
206  psh.hwndParent = hCPLWindow;
207  psh.hInstance = hApplet;
208  psh.pszIcon = MAKEINTRESOURCEW(IDC_DESK_ICON);
209  psh.pszCaption = Caption;
210  psh.nPages = 0;
211  psh.nStartPage = 0;
212  psh.phpage = hpsp;
213  psh.pfnCallback = PropSheetProc;
214 
215  /* Allow shell extensions to replace the background page */
217 
218  for (i = 0; i != sizeof(PropPages) / sizeof(PropPages[0]); i++)
219  {
220  if (pwszSelectedTab && wcsicmp(pwszSelectedTab, PropPages[i].Name) == 0)
221  psh.nStartPage = i;
222 
223  /* Override the background page if requested by a shell extension */
224  if (PropPages[i].idDlg == IDD_BACKGROUND && hpsxa != NULL &&
226  {
227  /* The shell extension added one or more pages to replace the background page.
228  Don't create the built-in page anymore! */
229  continue;
230  }
231 
233  }
234 
235  /* NOTE: Don't call SHAddFromPropSheetExtArray here because this applet only allows
236  replacing the background page but not extending the applet by more pages */
237 
238  if (nPage != 0 && psh.nStartPage == 0)
239  psh.nStartPage = nPage;
240 
241  PropertySheet(&psh);
242 
243 cleanup:
244  if (hpsxa != NULL)
246 
247  if (argv)
248  LocalFree(argv);
249 
250  return TRUE;
251 }
static const struct @204 PropPages[]
void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa)
Definition: shellord.c:2057
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
static int argc
Definition: ServiceArgs.c:12
WORD idDlg
Definition: desk.c:110
#define TRUE
Definition: types.h:120
HWND hCPLWindow
Definition: desk.c:27
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define MAX_DESK_PAGES
Definition: desk.h:66
BOOL ActivateThemeFile(LPCWSTR pwszFile)
Definition: theme.c:1014
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
uint16_t * PWSTR
Definition: typedefs.h:55
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
COLORREF desktop_color
Definition: desk.h:106
#define REGSTR_PATH_CONTROLSFOLDER
Definition: regstr.h:76
#define ZeroMemory
Definition: winbase.h:1648
LPCWSTR pwszAction
Definition: desk.h:108
#define COLOR_DESKTOP
Definition: winuser.h:904
static BOOL CALLBACK DisplayAppletPropSheetAddPage(HPROPSHEETPAGE hpage, LPARAM lParam)
Definition: desk.c:68
static BOOL InitPropSheetPage(PROPSHEETHEADER *ppsh, WORD idDlg, DLGPROC DlgProc, LPFNPSPCALLBACK pfnCallback)
Definition: desk.c:81
#define PSH_USECALLBACK
Definition: prsht.h:48
#define IDD_BACKGROUND
Definition: resource.h:10
#define argv
Definition: mplay32.c:18
int32_t INT
Definition: typedefs.h:57
DWORD WINAPI GetSysColor(_In_ int)
WPARAM wParam
Definition: combotst.c:138
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
#define IDS_CPLNAME
Definition: resource.h:8
#define PSH_USEICONID
Definition: prsht.h:42
LPWSTR WINAPI GetCommandLineW(VOID)
Definition: proc.c:2015
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
LPWSTR *WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int *numargs)
Definition: shell32_main.c:79
smooth NULL
Definition: ftsmooth.c:416
#define PROPSHEETHEADER
Definition: prsht.h:392
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
Definition: desk.c:124
LONG_PTR LPARAM
Definition: windef.h:208
LPCWSTR pwszFile
Definition: desk.h:107
#define IDC_DESK_ICON
Definition: resource.h:4
char TCHAR
Definition: xmlstorage.h:189
if(!(yy_init))
Definition: macro.lex.yy.c:714
#define PSH_PROPTITLE
Definition: prsht.h:40
HINSTANCE hApplet
Definition: desk.c:26
#define CPL_STARTWPARMSW
Definition: cpl.h:21
_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)
static const WCHAR L[]
Definition: oid.c:1250
#define wcsicmp
Definition: string.h:1152
#define TEXT(s)
Definition: k32.h:26
#define CPLPAGE_DISPLAY_BACKGROUND
Definition: cplext.h:8
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
unsigned int UINT
Definition: ndis.h:50
UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa, UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam)
Definition: shellord.c:2026
#define PropertySheet
Definition: prsht.h:400
GLOBAL_DATA g_GlobalData
Definition: background.c:84
char * cleanup(char *str)
Definition: wpickclick.c:99
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface)
Definition: shellord.c:1909
WCHAR * LPWSTR
Definition: xmlstorage.h:184
LPFNPSPCALLBACK Callback
Definition: desk.c:112
LPARAM lParam
Definition: combotst.c:139
DLGPROC DlgProc
Definition: desk.c:111
#define LoadString
Definition: winuser.h:5794
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

◆ DisplayAppletPropSheetAddPage()

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

Definition at line 68 of file desk.c.

69 {
71  if (ppsh != NULL && ppsh->nPages < MAX_DESK_PAGES)
72  {
73  ppsh->phpage[ppsh->nPages++] = hpage;
74  return TRUE;
75  }
76 
77  return FALSE;
78 }
#define TRUE
Definition: types.h:120
#define MAX_DESK_PAGES
Definition: desk.h:66
smooth NULL
Definition: ftsmooth.c:416
#define PROPSHEETHEADER
Definition: prsht.h:392
LPARAM lParam
Definition: combotst.c:139

Referenced by DisplayApplet(), and InitPropSheetPage().

◆ DllMain()

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

Definition at line 367 of file desk.c.

368 {
370 
371  switch (dwReason)
372  {
373  case DLL_PROCESS_ATTACH:
375  RegisterPreviewControl(hInstDLL);
376 // case DLL_THREAD_ATTACH:
377  hApplet = hInstDLL;
378  break;
379 
380  case DLL_PROCESS_DETACH:
381  UnregisterPreviewControl(hInstDLL);
382  CoUninitialize();
383  break;
384  }
385 
386  return TRUE;
387 }
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
static IN DWORD IN LPVOID lpvReserved
DWORD dwReason
Definition: misc.cpp:154
smooth NULL
Definition: ftsmooth.c:416
VOID UnregisterPreviewControl(IN HINSTANCE hInstance)
Definition: preview.c:555
#define DLL_PROCESS_DETACH
Definition: compat.h:119
HINSTANCE hApplet
Definition: desk.c:26
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
Definition: compobj.c:2002
BOOL RegisterPreviewControl(IN HINSTANCE hInstance)
Definition: preview.c:539

◆ InitPropSheetPage()

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

Definition at line 81 of file desk.c.

82 {
83  HPROPSHEETPAGE hPage;
84  PROPSHEETPAGE psp;
85 
86  if (ppsh->nPages < MAX_DESK_PAGES)
87  {
88  ZeroMemory(&psp, sizeof(psp));
89  psp.dwSize = sizeof(psp);
90  psp.dwFlags = PSP_DEFAULT;
91  if (pfnCallback != NULL)
92  psp.dwFlags |= PSP_USECALLBACK;
93  psp.hInstance = hApplet;
94  psp.pszTemplate = MAKEINTRESOURCE(idDlg);
95  psp.pfnDlgProc = DlgProc;
96  psp.pfnCallback = pfnCallback;
97 
98  hPage = CreatePropertySheetPage(&psp);
99  if (hPage != NULL)
100  {
101  return DisplayAppletPropSheetAddPage(hPage, (LPARAM)ppsh);
102  }
103  }
104 
105  return FALSE;
106 }
WORD idDlg
Definition: desk.c:110
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define MAX_DESK_PAGES
Definition: desk.h:66
#define ZeroMemory
Definition: winbase.h:1648
#define PSP_USECALLBACK
Definition: prsht.h:30
static BOOL CALLBACK DisplayAppletPropSheetAddPage(HPROPSHEETPAGE hpage, LPARAM lParam)
Definition: desk.c:68
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
#define CreatePropertySheetPage
Definition: prsht.h:399
#define PSP_DEFAULT
Definition: prsht.h:22
HINSTANCE hApplet
Definition: desk.c:26
DLGPROC DlgProc
Definition: desk.c:111
#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 340 of file desk.c.

345 {
346  LPWSTR lpwString;
347 
348  if (!pszFile)
349  {
350  DPRINT("InstallScreenSaver() null file\n");
352  return;
353  }
354  DPRINT("InstallScreenSaver() Install from file %s\n", pszFile);
355  lpwString = pSetupMultiByteToUnicode(pszFile, 0);
356  if (!lpwString)
357  {
358  DPRINT("InstallScreenSaver() not enough memory to convert string to unicode\n");
360  return;
361  }
362  InstallScreenSaverW(hWindow, hInstance, lpwString, nCmdShow);
363  MyFree(lpwString);
364 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
HINSTANCE hInstance
Definition: charmap.c:20
LPWSTR WINAPI pSetupMultiByteToUnicode(LPCSTR lpMultiByteStr, UINT uCodePage)
Definition: misc.c:281
void DPRINT(...)
Definition: polytest.cpp:61
void WINAPI InstallScreenSaverW(IN HWND hWindow, IN HANDLE hInstance, IN LPCWSTR pszFile, IN UINT nCmdShow)
Definition: desk.c:291
#define SetLastError(x)
Definition: compat.h:418
WCHAR * LPWSTR
Definition: xmlstorage.h:184
VOID WINAPI MyFree(LPVOID lpMem)
Definition: misc.c:128

◆ InstallScreenSaverW()

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

Definition at line 291 of file desk.c.

296 {
297  WCHAR pszSystemDir[MAX_PATH];
298  WCHAR pszDrive[3];
299  WCHAR pszPath[MAX_PATH];
300  WCHAR pszFilename[MAX_PATH];
301  WCHAR pszExt[MAX_PATH];
302  LPWSTR pszOutName;
303  UINT uCompressionType=FILE_COMPRESSION_NONE;
304  DWORD dwSourceSize;
305  DWORD dwTargetSize;
306  DWORD rc;
307 
308  if (!pszFile)
309  {
310  DPRINT("InstallScreenSaver() null file\n");
312  return;
313  }
314  DPRINT("InstallScreenSaver() Installing screensaver %ls\n", pszFile);
315 
316  rc = SetupGetFileCompressionInfoW(pszFile, &pszOutName, &dwSourceSize, &dwTargetSize, &uCompressionType);
317  if (ERROR_SUCCESS != rc)
318  {
319  DPRINT("InstallScreenSaver() SetupGetFileCompressionInfo failed with error 0x%lx\n", rc);
320  SetLastError(rc);
321  return;
322  }
323  if (!GetSystemDirectoryW((LPWSTR)pszSystemDir, sizeof(pszSystemDir)/sizeof(WCHAR)))
324  {
325  MyFree(pszOutName);
326  DPRINT("InstallScreenSaver() GetSystemDirectory failed with error 0x%lx\n", GetLastError());
327  return;
328  }
329  _wsplitpath(pszOutName, pszDrive, pszPath, pszFilename, pszExt);
330  MyFree(pszOutName);
331  StringCbCatW(pszSystemDir, sizeof(pszSystemDir), L"\\");
332  StringCbCatW(pszSystemDir, sizeof(pszSystemDir), pszFilename);
333  StringCbCatW(pszSystemDir, sizeof(pszSystemDir), pszExt);
334  rc = SetupDecompressOrCopyFileW(pszFile, pszSystemDir, &uCompressionType);
335  DPRINT("InstallScreenSaver() Copying to %ls, compression type %d return 0x%lx\n", pszFile, uCompressionType, rc);
336 }
void _wsplitpath(const WCHAR *path, WCHAR *drv, WCHAR *dir, WCHAR *name, WCHAR *ext)
Definition: splitpath.c:22
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
#define ERROR_SUCCESS
Definition: deptool.c:10
#define FILE_COMPRESSION_NONE
Definition: setupapi.h:351
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:342
void DPRINT(...)
Definition: polytest.cpp:61
DWORD WINAPI SetupDecompressOrCopyFileW(PCWSTR source, PCWSTR target, PUINT type)
Definition: misc.c:1690
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:26
DWORD WINAPI SetupGetFileCompressionInfoW(PCWSTR source, PWSTR *name, PDWORD source_size, PDWORD target_size, PUINT type)
Definition: misc.c:1555
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:418
static const WCHAR L[]
Definition: oid.c:1250
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2312
unsigned int UINT
Definition: ndis.h:50
WCHAR * LPWSTR
Definition: xmlstorage.h:184
VOID WINAPI MyFree(LPVOID lpMem)
Definition: misc.c:128

Referenced by InstallScreenSaverA().

◆ LoadPopupMenu()

HMENU LoadPopupMenu ( IN HINSTANCE  hInstance,
IN LPCTSTR  lpMenuName 
)

Definition at line 41 of file desk.c.

43 {
44  HMENU hMenu, hSubMenu = NULL;
45 
46  hMenu = LoadMenu(hInstance,
47  lpMenuName);
48 
49  if (hMenu != NULL)
50  {
51  hSubMenu = GetSubMenu(hMenu,
52  0);
53  if (hSubMenu != NULL &&
54  !RemoveMenu(hMenu,
55  0,
57  {
58  hSubMenu = NULL;
59  }
60 
61  DestroyMenu(hMenu);
62  }
63 
64  return hSubMenu;
65 }
HINSTANCE hInstance
Definition: charmap.c:20
#define MF_BYPOSITION
Definition: winuser.h:203
smooth NULL
Definition: ftsmooth.c:416
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define LoadMenu
Definition: winuser.h:5792
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60

◆ PropSheetProc()

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

Definition at line 124 of file desk.c.

125 {
126  // NOTE: This callback is needed to set large icon correctly.
127  HICON hIcon;
128  switch (uMsg)
129  {
130  case PSCB_INITIALIZED:
131  {
133  SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
134  break;
135  }
136  }
137  return 0;
138 }
static HICON
Definition: imagelist.c:84
LONG_PTR LPARAM
Definition: windef.h:208
#define IDC_DESK_ICON
Definition: resource.h:4
HINSTANCE hApplet
Definition: desk.c:26
#define PSCB_INITIALIZED
Definition: prsht.h:75
HICON hIcon
Definition: msconfig.c:44
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define ICON_BIG
Definition: tnclass.cpp:51

Referenced by DisplayApplet().

◆ ScreenSaverPageProc()

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

Definition at line 692 of file screensaver.c.

696 {
697  PDATA pData;
698 
699  pData = (PDATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
700 
701  switch (uMsg)
702  {
703  case WM_INITDIALOG:
704  {
705  OnInitDialog(hwndDlg, pData);
706  break;
707  }
708 
709  case WM_DESTROY:
710  {
711  if (pData->PrevWindowPi.hProcess)
712  {
713  TerminateProcess(pData->PrevWindowPi.hProcess, 0);
714  CloseHandle(pData->PrevWindowPi.hProcess);
715  CloseHandle(pData->PrevWindowPi.hThread);
716  }
718  0,
719  pData);
720  break;
721  }
722 
723  case WM_ENDSESSION:
724  {
725  SetScreenSaverPreviewBox(hwndDlg,
726  pData);
727  break;
728  }
729 
730  case WM_COMMAND:
731  {
732  DWORD controlId = LOWORD(wParam);
734 
735  switch (controlId)
736  {
737  case IDC_SCREENS_LIST:
738  {
739  if (HIWORD(wParam) == CBN_SELCHANGE)
740  {
741  SelectionChanged(hwndDlg, pData);
743  PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
744  }
745  break;
746  }
747 
749  {
750  if (command == EN_CHANGE)
751  PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
752  break;
753  }
754 
755  case IDC_SCREENS_POWER_BUTTON: // Start Powercfg.Cpl
756  {
757  if (command == BN_CLICKED)
758  WinExec("rundll32 shell32.dll,Control_RunDLL powercfg.cpl",SW_SHOWNORMAL);
759  break;
760  }
761 
762  case IDC_SCREENS_TESTSC: // Screensaver Preview
763  {
764  if (command == BN_CLICKED)
765  {
766  ScreensaverPreview(hwndDlg, pData);
768  }
769  break;
770  }
771 
772  case IDC_SCREENS_SETTINGS: // Screensaver Settings
773  {
774  if (command == BN_CLICKED)
775  ScreensaverConfig(hwndDlg, pData);
776  break;
777  }
778 
779  case IDC_SCREENS_USEPASSCHK: // Screensaver Is Secure
780  {
781  if (command == BN_CLICKED)
782  {
783  PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
784  }
785  break;
786  }
787  }
788  break;
789  }
790 
791  case WM_NOTIFY:
792  {
793  LPNMHDR lpnm = (LPNMHDR)lParam;
794 
795  switch(lpnm->code)
796  {
797  case PSN_APPLY:
798  {
799  SetScreenSaver(hwndDlg, pData);
800  return TRUE;
801  }
802 
803  case PSN_SETACTIVE:
804  {
805  /* Enable screensaver preview support */
807  break;
808  }
809 
810  case PSN_KILLACTIVE:
811  {
812  /* Kill running preview screensaver */
813  if (pData->PrevWindowPi.hProcess)
814  {
815  TerminateProcess(pData->PrevWindowPi.hProcess, 0);
816  CloseHandle(pData->PrevWindowPi.hProcess);
817  CloseHandle(pData->PrevWindowPi.hThread);
818  pData->PrevWindowPi.hThread = pData->PrevWindowPi.hProcess = NULL;
819  }
820  break;
821  }
822  }
823  }
824  break;
825  }
826 
827  return FALSE;
828 }
#define TRUE
Definition: types.h:120
#define CloseHandle
Definition: compat.h:407
#define IDC_SCREENS_SETTINGS
Definition: resource.h:39
#define IDC_SCREENS_POWER_BUTTON
Definition: resource.h:38
#define IDC_SCREENS_LIST
Definition: resource.h:37
#define IDC_SCREENS_TIMEDELAY
Definition: resource.h:42
#define IDC_SCREENS_USEPASSCHK
Definition: resource.h:41
static BOOL OnInitDialog(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:582
UINT WINAPI DECLSPEC_HOTPATCH WinExec(LPCSTR lpCmdLine, UINT uCmdShow)
Definition: proc.c:4776
static VOID SetScreenSaver(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:510
#define PSN_APPLY
Definition: prsht.h:117
#define PSN_SETACTIVE
Definition: prsht.h:115
WPARAM wParam
Definition: combotst.c:138
struct tagNMHDR * LPNMHDR
static VOID SetScreenSaverPreviewBox(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:108
UINT code
Definition: winuser.h:3134
#define PSN_KILLACTIVE
Definition: prsht.h:116
smooth NULL
Definition: ftsmooth.c:416
struct _DATA * PDATA
#define WM_DESTROY
Definition: winuser.h:1591
#define GetProcessHeap()
Definition: compat.h:404
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define BN_CLICKED
Definition: winuser.h:1907
unsigned long DWORD
Definition: ntddk_ex.h:95
static VOID ScreensaverPreview(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:244
#define WM_ENDSESSION
Definition: winuser.h:1609
static VOID ScreensaverConfig(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:196
#define DWLP_USER
Definition: winuser.h:866
#define IDC_SCREENS_TESTSC
Definition: resource.h:40
static VOID SelectionChanged(HWND hwndDlg, PDATA pData)
Definition: screensaver.c:82
#define WM_COMMAND
Definition: winuser.h:1722
HWND WINAPI GetParent(_In_ HWND)
#define SW_SHOWNORMAL
Definition: winuser.h:764
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
Definition: proc.c:1532
#define CBN_SELCHANGE
Definition: winuser.h:1961
#define HIWORD(l)
Definition: typedefs.h:246
#define GetWindowLongPtr
Definition: treelist.c:73
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define HeapFree(x, y, z)
Definition: compat.h:403
#define WM_NOTIFY
Definition: richedit.h:61
#define EN_CHANGE
Definition: winuser.h:2004

◆ SettingsPageCallbackProc()

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

Definition at line 647 of file settings.c.

648 {
649  UINT Ret = 0;
650 
651  switch (uMsg)
652  {
653  case PSPCB_CREATE:
655  break;
656 
657  case PSPCB_RELEASE:
659  break;
660  }
661 
662  return Ret;
663 }
HINSTANCE hApplet
Definition: access.c:17
VOID UnregisterMonitorSelectionControl(IN HINSTANCE hInstance)
Definition: monslctl.c:1655
#define PSPCB_RELEASE
Definition: prsht.h:37
#define PSPCB_CREATE
Definition: prsht.h:38
unsigned int UINT
Definition: ndis.h:50
BOOL RegisterMonitorSelectionControl(IN HINSTANCE hInstance)
Definition: monslctl.c:1638

◆ SettingsPageProc()

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

Definition at line 448 of file settings_page.c.

449 {
450  switch (uMsg)
451  {
452  case WM_INITDIALOG:
453  OnInitSettingsPage(hwndDlg);
454  break;
455 
456  case WM_DESTROY:
457  OnDestroySettingsPage(hwndDlg);
458  break;
459 
460  case WM_COMMAND:
461  OnCommandSettingsPage(hwndDlg, wParam);
462  break;
463 
464  case WM_NOTIFY:
465  OnNotifySettingsPage(hwndDlg, lParam);
466  break;
467  }
468 
469  return FALSE;
470 }
VOID OnCommandSettingsPage(HWND hwndDlg, WPARAM wParam)
WPARAM wParam
Definition: combotst.c:138
#define WM_DESTROY
Definition: winuser.h:1591
static VOID OnNotifySettingsPage(HWND hwndDlg, LPARAM lParam)
static VOID OnDestroySettingsPage(HWND hwndDlg)
#define WM_COMMAND
Definition: winuser.h:1722
static VOID OnInitSettingsPage(HWND hwndDlg)
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by SystemApplet().

◆ ThemesPageProc()

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

Definition at line 1064 of file theme.c.

1065 {
1066  LPNMHDR lpnm;
1067 
1068  switch (uMsg)
1069  {
1070  case WM_INITDIALOG:
1071  break;
1072 
1073  case WM_COMMAND:
1074  break;
1075 
1076  case WM_NOTIFY:
1077  lpnm = (LPNMHDR)lParam;
1078  switch (lpnm->code)
1079  {
1080  case PSN_APPLY:
1082  return TRUE;
1083  }
1084  break;
1085 
1086  case WM_DESTROY:
1087  break;
1088  }
1089 
1090  return FALSE;
1091 }
#define TRUE
Definition: types.h:120
#define PSN_APPLY
Definition: prsht.h:117
struct tagNMHDR * LPNMHDR
#define WM_SETTINGCHANGE
Definition: winuser.h:1611
UINT code
Definition: winuser.h:3134
LONG_PTR LPARAM
Definition: windef.h:208
#define WM_DESTROY
Definition: winuser.h:1591
#define WM_COMMAND
Definition: winuser.h:1722
#define TEXT(s)
Definition: k32.h:26
#define SendMessage
Definition: winuser.h:5818
#define HWND_BROADCAST
Definition: winuser.h:1190
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Variable Documentation

◆ Applets

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

Definition at line 30 of file desk.c.

Referenced by CPlApplet().

◆ Callback

Definition at line 112 of file desk.c.

Referenced by BlTblFindEntry(), BlTblSetEntry(), Chkdsk(), ChkdskEx(), ChkdskFileSystem(), ChkdskFileSystem_UStr(), CmRegisterCallback(), CreateHardwareTimer(), CreateTimerQueueTimer(), CTEStartTimer(), ddraw7_EnumSurfaces(), DisplayApplet(), DosMouseService(), EnumerateSectionsStartingWith(), EnumerateSoundDevices(), EnumerateSubkey(), EnumerateTimeZoneList(), ExCreateCallback(), ExDoCallBack(), ExInitializeCallBack(), Ext2Format(), FindDebugInfoFileEx(), FindExecutableImageEx(), FindExecutableImageExW(), Format(), FormatEx(), FormatEx2(), FormatFileSystem(), FormatFileSystem_UStr(), HDA_TransferCodecVerbs(), InbvNotifyDisplayOwnershipLost(), IoReportTargetDeviceChangeAsynchronous(), KdbRegisterCliCallback(), KdRosSetDebugCallback(), KmtFilterRegisterContexts(), KspEnumerateBusRegistryKeys(), KsStreamPointerScheduleTimeout(), LdrpCallTlsInitializers(), LdrVerifyImageMatchesChecksum(), LpcRequestWaitReplyPort(), NtRequestWaitReplyPort(), ParaNdis5_StopReceive(), ParaNdis5_StopSend(), PsaEnumerateProcesses(), PsaEnumerateProcessModules(), PsaEnumerateSystemModules(), PsaEnumerateThreads(), PsaWalkProcesses(), PsaWalkSystemModules(), PsaWalkThreads(), RegisterWaitForSingleObject(), RegisterWaitForSingleObjectEx(), RtlCreateTimer(), RtlIsRangeAvailable(), RtlRegisterWait(), RtlSetIoCompletionCallback(), RtlSetTimer(), DriveVolume::ScanDirectory(), SetTimerQueueTimer(), TestObjectTypes(), USBPORT_RequestAsyncCallback(), VfatChkdsk(), VfatFormat(), VfatxFormat(), WahEnumerateHandleContexts(), WPUQueryBlockingCallback(), WsNcEnumerateCatalogItems(), and WsTcEnumerateCatalogItems().

◆ DlgProc

◆ hApplet

HINSTANCE hApplet = 0

Definition at line 26 of file desk.c.

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

◆ hCPLWindow

HWND hCPLWindow

Definition at line 27 of file desk.c.

Referenced by DisplayApplet(), and LoadSchemeFromTheme().

◆ idDlg

◆ Name

Definition at line 113 of file desk.c.

◆ PropPages

const { ... } PropPages[]
Initial value:
=
{
{ IDD_SCREENSAVER, ScreenSaverPageProc, NULL, L"Screen Saver" },
}
INT_PTR CALLBACK ScreenSaverPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: screensaver.c:692
UINT CALLBACK SettingsPageCallbackProc(HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp)
Definition: settings.c:647
#define IDD_SETTINGS
Definition: resource.h:13
#define IDD_APPEARANCE
Definition: resource.h:12
#define IDD_BACKGROUND
Definition: resource.h:10
#define IDD_SCREENSAVER
Definition: resource.h:11
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR L[]
Definition: oid.c:1250
INT_PTR CALLBACK BackgroundPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: background.c:1170
INT_PTR CALLBACK SettingsPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR CALLBACK AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: appearance.c:216

Referenced by DisplayApplet().