ReactOS  0.4.14-dev-866-g5b3e84f
desk.c
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: ReactOS Display Control Panel
4  * FILE: dll/cpl/desk/desk.c
5  * PURPOSE: ReactOS Display Control Panel
6  *
7  * PROGRAMMERS: Trevor McCort (lycan359@gmail.com)
8  */
9 
10 #include "desk.h"
11 #include <shellapi.h>
12 #include <cplext.h>
13 #include <debug.h>
14 
15 #define NUM_APPLETS (1)
16 
18 
25 
28 
29 /* Applets */
31 {
32  {
37  }
38 };
39 
40 HMENU
42  IN LPCTSTR lpMenuName)
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 }
66 
67 static BOOL CALLBACK
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 }
79 
80 static BOOL
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 }
107 
108 static const struct
109 {
114 } PropPages[] =
115 {
116  /* { IDD_THEMES, ThemesPageProc, NULL, L"Themes" }, */ /* TODO: */
117  { IDD_BACKGROUND, BackgroundPageProc, NULL, L"Desktop" },
118  { IDD_SCREENSAVER, ScreenSaverPageProc, NULL, L"Screen Saver" },
119  { IDD_APPEARANCE, AppearancePageProc, NULL, L"Appearance" },
121 };
122 
123 static int CALLBACK
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 }
139 
140 /* Display Applet */
141 static LONG APIENTRY
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 
155 
156  hCPLWindow = hwnd;
157 
158  if (uMsg == CPL_STARTWPARMSW && lParam)
159  {
160  int argc;
161  int i;
162 
163 #if 0
165 #else
167 #endif
168 
169  if (argv && argc)
170  {
171  for (i = 0; i<argc; i++)
172  {
173 #if 0
174  if (argv[i][0] == L'@')
175  pwszSelectedTab = &argv[i][1];
176 #else
177  if (wcsncmp(argv[i], L"desk,@", 6) == 0)
178  pwszSelectedTab = &argv[i][6];
179 #endif
180  else if (wcsncmp(argv[i], L"/Action:", 8) == 0)
181  pwszAction = &argv[i][8];
182  else if (wcsncmp(argv[i], L"/file:", 6) == 0)
183  pwszFile = &argv[i][6];
184  }
185  }
186  }
187 
188  if(pwszAction && wcsncmp(pwszAction, L"ActivateMSTheme", 15) == 0)
189  {
190  ActivateThemeFile(pwszFile);
191  goto cleanup;
192  }
193 
194  g_GlobalData.pwszFile = pwszFile;
195  g_GlobalData.pwszAction = pwszAction;
197 
198  LoadString(hApplet, IDS_CPLNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
199 
200  ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
201  psh.dwSize = sizeof(PROPSHEETHEADER);
202  psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE | PSH_USEICONID;
203  psh.hwndParent = hCPLWindow;
204  psh.hInstance = hApplet;
205  psh.pszIcon = MAKEINTRESOURCEW(IDC_DESK_ICON);
206  psh.pszCaption = Caption;
207  psh.nPages = 0;
208  psh.nStartPage = 0;
209  psh.phpage = hpsp;
210  psh.pfnCallback = PropSheetProc;
211 
212  /* Allow shell extensions to replace the background page */
214 
215  for (i = 0; i != sizeof(PropPages) / sizeof(PropPages[0]); i++)
216  {
217  if (pwszSelectedTab && wcsicmp(pwszSelectedTab, PropPages[i].Name) == 0)
218  psh.nStartPage = i;
219 
220  /* Override the background page if requested by a shell extension */
221  if (PropPages[i].idDlg == IDD_BACKGROUND && hpsxa != NULL &&
223  {
224  /* The shell extension added one or more pages to replace the background page.
225  Don't create the built-in page anymore! */
226  continue;
227  }
228 
230  }
231 
232  /* NOTE: Don't call SHAddFromPropSheetExtArray here because this applet only allows
233  replacing the background page but not extending the applet by more pages */
234 
235  PropertySheet(&psh);
236 
237 cleanup:
238  if (hpsxa != NULL)
240 
241  if (argv)
242  LocalFree(argv);
243 
244  return TRUE;
245 }
246 
247 
248 /* Control Panel Callback */
250 CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
251 {
252  int i = (int)lParam1;
253 
254  switch (uMsg)
255  {
256  case CPL_INIT:
257  return TRUE;
258 
259  case CPL_GETCOUNT:
260  return NUM_APPLETS;
261 
262  case CPL_INQUIRE:
263  {
264  CPLINFO *CPlInfo = (CPLINFO*)lParam2;
265  CPlInfo->lData = 0;
266  CPlInfo->idIcon = Applets[i].idIcon;
267  CPlInfo->idName = Applets[i].idName;
268  CPlInfo->idInfo = Applets[i].idDescription;
269  }
270  break;
271 
272  case CPL_DBLCLK:
273  Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
274  break;
275  case CPL_STARTWPARMSW:
276  return Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
277  }
278 
279  return FALSE;
280 }
281 
282 void
283 WINAPI
285  IN HWND hWindow,
287  IN LPCWSTR pszFile,
288  IN UINT nCmdShow)
289 {
290  WCHAR pszSystemDir[MAX_PATH];
291  WCHAR pszDrive[3];
292  WCHAR pszPath[MAX_PATH];
293  WCHAR pszFilename[MAX_PATH];
294  WCHAR pszExt[MAX_PATH];
295  LPWSTR pszOutName;
296  UINT uCompressionType=FILE_COMPRESSION_NONE;
297  DWORD dwSourceSize;
298  DWORD dwTargetSize;
299  DWORD rc;
300 
301  if (!pszFile)
302  {
303  DPRINT("InstallScreenSaver() null file\n");
305  return;
306  }
307  DPRINT("InstallScreenSaver() Installing screensaver %ls\n", pszFile);
308 
309  rc = SetupGetFileCompressionInfoW(pszFile, &pszOutName, &dwSourceSize, &dwTargetSize, &uCompressionType);
310  if (ERROR_SUCCESS != rc)
311  {
312  DPRINT("InstallScreenSaver() SetupGetFileCompressionInfo failed with error 0x%lx\n", rc);
313  SetLastError(rc);
314  return;
315  }
316  if (!GetSystemDirectoryW((LPWSTR)pszSystemDir, sizeof(pszSystemDir)/sizeof(WCHAR)))
317  {
318  MyFree(pszOutName);
319  DPRINT("InstallScreenSaver() GetSystemDirectory failed with error 0x%lx\n", GetLastError());
320  return;
321  }
322  _wsplitpath(pszOutName, pszDrive, pszPath, pszFilename, pszExt);
323  MyFree(pszOutName);
324  StringCbCatW(pszSystemDir, sizeof(pszSystemDir), L"\\");
325  StringCbCatW(pszSystemDir, sizeof(pszSystemDir), pszFilename);
326  StringCbCatW(pszSystemDir, sizeof(pszSystemDir), pszExt);
327  rc = SetupDecompressOrCopyFileW(pszFile, pszSystemDir, &uCompressionType);
328  DPRINT("InstallScreenSaver() Copying to %ls, compression type %d return 0x%lx\n", pszFile, uCompressionType, rc);
329 }
330 
331 void
332 WINAPI
334  IN HWND hWindow,
336  IN LPCSTR pszFile,
337  IN UINT nCmdShow)
338 {
339  LPWSTR lpwString;
340 
341  if (!pszFile)
342  {
343  DPRINT("InstallScreenSaver() null file\n");
345  return;
346  }
347  DPRINT("InstallScreenSaver() Install from file %s\n", pszFile);
348  lpwString = pSetupMultiByteToUnicode(pszFile, 0);
349  if (!lpwString)
350  {
351  DPRINT("InstallScreenSaver() not enough memory to convert string to unicode\n");
353  return;
354  }
355  InstallScreenSaverW(hWindow, hInstance, lpwString, nCmdShow);
356  MyFree(lpwString);
357 }
358 
359 BOOL WINAPI
361 {
363 
364  switch (dwReason)
365  {
366  case DLL_PROCESS_ATTACH:
368  RegisterPreviewControl(hInstDLL);
369 // case DLL_THREAD_ATTACH:
370  hApplet = hInstDLL;
371  break;
372 
373  case DLL_PROCESS_DETACH:
374  UnregisterPreviewControl(hInstDLL);
375  CoUninitialize();
376  break;
377  }
378 
379  return TRUE;
380 }
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
static const struct @204 PropPages[]
void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa)
Definition: shellord.c:1755
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
static int argc
Definition: ServiceArgs.c:12
WORD idDlg
Definition: desk.c:110
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define IN
Definition: typedefs.h:38
INT_PTR CALLBACK ScreenSaverPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: screensaver.c:692
static HICON
Definition: imagelist.c:84
#define TRUE
Definition: types.h:120
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
Definition: cpl.h:24
UINT CALLBACK SettingsPageCallbackProc(HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp)
Definition: settings.c:643
void WINAPI InstallScreenSaverA(IN HWND hWindow, IN HANDLE hInstance, IN LPCSTR pszFile, IN UINT nCmdShow)
Definition: desk.c:333
#define ERROR_SUCCESS
Definition: deptool.c:10
HWND hCPLWindow
Definition: desk.c:27
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define IDD_SETTINGS
Definition: resource.h:13
#define MAX_DESK_PAGES
Definition: desk.h:66
BOOL ActivateThemeFile(LPCWSTR pwszFile)
Definition: theme.c:1014
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
#define FILE_COMPRESSION_NONE
Definition: setupapi.h:351
COLORREF desktop_color
Definition: desk.h:106
int idName
Definition: hotplug.h:27
#define REGSTR_PATH_CONTROLSFOLDER
Definition: regstr.h:76
int idIcon
Definition: hotplug.h:26
#define CALLBACK
Definition: compat.h:27
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD dwReason, LPVOID lpvReserved)
Definition: desk.c:360
int idInfo
Definition: cpl.h:27
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
#define ZeroMemory
Definition: winbase.h:1642
LPCWSTR pwszAction
Definition: desk.h:108
#define COLOR_DESKTOP
Definition: winuser.h:904
#define IDD_APPEARANCE
Definition: resource.h:12
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
#define PSP_USECALLBACK
Definition: prsht.h:30
UINT_PTR WPARAM
Definition: windef.h:207
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
int32_t INT_PTR
Definition: typedefs.h:62
#define PSH_USECALLBACK
Definition: prsht.h:48
#define argv
Definition: mplay32.c:18
#define IDD_BACKGROUND
Definition: resource.h:10
DWORD WINAPI GetSysColor(_In_ int)
WPARAM wParam
Definition: combotst.c:138
LONG CALLBACK CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
Definition: desk.c:250
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:342
static IN DWORD IN LPVOID lpvReserved
int idIcon
Definition: cpl.h:25
int idDescription
Definition: hotplug.h:28
#define CPL_DBLCLK
Definition: cpl.h:16
DWORD dwReason
Definition: misc.cpp:154
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
HINSTANCE hInstance
Definition: charmap.c:20
#define IDS_CPLNAME
Definition: resource.h:8
#define PSH_USEICONID
Definition: prsht.h:42
#define IDD_SCREENSAVER
Definition: resource.h:11
LPWSTR WINAPI pSetupMultiByteToUnicode(LPCSTR lpMultiByteStr, UINT uCodePage)
Definition: misc.c:281
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
LPWSTR WINAPI GetCommandLineW(VOID)
Definition: proc.c:2013
#define MF_BYPOSITION
Definition: winuser.h:203
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
HMENU LoadPopupMenu(IN HINSTANCE hInstance, IN LPCTSTR lpMenuName)
Definition: desk.c:41
LPWSTR *WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int *numargs)
Definition: shell32_main.c:76
#define LPPROPSHEETPAGE
Definition: prsht.h:372
smooth NULL
Definition: ftsmooth.c:416
#define PROPSHEETHEADER
Definition: prsht.h:374
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
Definition: desk.c:124
VOID UnregisterPreviewControl(IN HINSTANCE hInstance)
Definition: preview.c:555
LONG_PTR LPARAM
Definition: windef.h:208
void DPRINT(...)
Definition: polytest.cpp:61
LPCWSTR pwszFile
Definition: desk.h:107
#define IDC_DESK_ICON
Definition: resource.h:4
const char * LPCSTR
Definition: xmlstorage.h:183
DWORD WINAPI SetupDecompressOrCopyFileW(PCWSTR source, PCWSTR target, PUINT type)
Definition: misc.c:1690
#define CreatePropertySheetPage
Definition: prsht.h:381
#define DLL_PROCESS_DETACH
Definition: compat.h:119
#define IDS_CPLDESCRIPTION
Definition: resource.h:9
char TCHAR
Definition: xmlstorage.h:189
#define PSP_DEFAULT
Definition: prsht.h:22
void WINAPI InstallScreenSaverW(IN HWND hWindow, IN HANDLE hInstance, IN LPCWSTR pszFile, IN UINT nCmdShow)
Definition: desk.c:284
if(!(yy_init))
Definition: macro.lex.yy.c:714
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define PSH_PROPTITLE
Definition: prsht.h:40
APPLET_PROC AppletProc
Definition: hotplug.h:29
HINSTANCE hApplet
Definition: desk.c:26
#define MAX_PATH
Definition: compat.h:26
#define WINAPI
Definition: msvc.h:6
DWORD WINAPI SetupGetFileCompressionInfoW(PCWSTR source, PWSTR *name, PDWORD source_size, PDWORD target_size, PUINT type)
Definition: misc.c:1555
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:417
#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)
#define CPL_INIT
Definition: cpl.h:12
APPLET Applets[NUM_APPLETS]
Definition: desk.c:30
#define CPL_INQUIRE
Definition: cpl.h:14
static const WCHAR L[]
Definition: oid.c:1250
LONG_PTR lData
Definition: cpl.h:28
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
int idName
Definition: cpl.h:26
LPWSTR Name
Definition: desk.c:113
#define wcsicmp
Definition: string.h:1152
BOOL WINAPI DestroyMenu(_In_ HMENU)
INT_PTR(CALLBACK * DLGPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2871
#define TEXT(s)
Definition: k32.h:26
#define CPLPAGE_DISPLAY_BACKGROUND
Definition: cplext.h:8
#define PSCB_INITIALIZED
Definition: prsht.h:75
#define LoadMenu
Definition: winuser.h:5792
HICON hIcon
Definition: msconfig.c:44
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2312
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
Definition: compobj.c:2002
unsigned int UINT
Definition: ndis.h:50
UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa, UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam)
Definition: shellord.c:1724
static LONG APIENTRY DisplayApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
Definition: desk.c:142
INT_PTR CALLBACK BackgroundPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: background.c:1168
#define PropertySheet
Definition: prsht.h:382
GLOBAL_DATA g_GlobalData
Definition: background.c:84
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
char * cleanup(char *str)
Definition: wpickclick.c:99
#define NUM_APPLETS
Definition: desk.c:15
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface)
Definition: shellord.c:1607
WCHAR * LPWSTR
Definition: xmlstorage.h:184
INT_PTR CALLBACK SettingsPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define LPFNPSPCALLBACK
Definition: prsht.h:370
LPFNPSPCALLBACK Callback
Definition: desk.c:112
VOID WINAPI MyFree(LPVOID lpMem)
Definition: misc.c:128
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
INT_PTR CALLBACK AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: appearance.c:216
LPARAM lParam
Definition: combotst.c:139
DLGPROC DlgProc
Definition: desk.c:111
#define CPL_GETCOUNT
Definition: cpl.h:13
#define LoadString
Definition: winuser.h:5794
#define PROPSHEETPAGE
Definition: prsht.h:371
#define APIENTRY
Definition: api.h:79
INT_PTR CALLBACK ThemesPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: theme.c:1064
#define ICON_BIG
Definition: tnclass.cpp:51
Definition: hotplug.h:24
BOOL RegisterPreviewControl(IN HINSTANCE hInstance)
Definition: preview.c:539
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12