ReactOS 0.4.16-dev-340-g0540c21
recycler_prop.cpp
Go to the documentation of this file.
1/*
2 * Trash virtual folder support. The trashing engine is implemented in trash.c
3 *
4 * Copyright (C) 2006 Mikolaj Zalewski
5 * Copyright (C) 2009 Andrew Hill
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#include <precomp.h>
23
25
26typedef struct
27{
33
35{
36 if (bEnable)
37 {
38 SendDlgItemMessage(hwndDlg, 14001, BM_SETCHECK, BST_UNCHECKED, 0);
39 EnableWindow(GetDlgItem(hwndDlg, 14002), FALSE);
40 SendDlgItemMessage(hwndDlg, 14003, BM_SETCHECK, BST_CHECKED, 0);
41 }
42 else
43 {
44 SendDlgItemMessage(hwndDlg, 14001, BM_SETCHECK, BST_CHECKED, 0);
45 EnableWindow(GetDlgItem(hwndDlg, 14002), TRUE);
46 SendDlgItemMessage(hwndDlg, 14003, BM_SETCHECK, BST_UNCHECKED, 0);
47 }
48}
49
50static VOID
51InitializeRecycleBinDlg(HWND hwndDlg, WCHAR DefaultDrive)
52{
53 WCHAR szDrive[] = L"A:\\";
54 DWORD dwDrives;
55 WCHAR szName[100];
56 WCHAR szVolume[100];
57 DWORD MaxComponent, Flags;
58 DWORD dwSerial;
59 LVCOLUMNW lc;
60 HWND hDlgCtrl;
61 LVITEMW li;
62 INT itemCount;
63 ULARGE_INTEGER TotalNumberOfFreeBytes, TotalNumberOfBytes, FreeBytesAvailable;
64 RECT rect;
65 int columnSize;
66 int defIndex = 0;
68 PDRIVE_ITEM_CONTEXT pItem = NULL, pDefault = NULL, pFirst = NULL;
69
70 hDlgCtrl = GetDlgItem(hwndDlg, 14000);
71
73 szVolume[0] = 0;
74
75 GetClientRect(hDlgCtrl, &rect);
76
77 ZeroMemory(&lc, sizeof(lc));
79
80 columnSize = 140; //FIXME
81 lc.iSubItem = 0;
82 lc.fmt = LVCFMT_FIXED_WIDTH;
83 lc.cx = columnSize;
84 lc.cchTextMax = wcslen(szVolume);
85 lc.pszText = szVolume;
86 (void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, 0, (LPARAM)&lc);
87
89 szVolume[0] = 0;
90
91 lc.iSubItem = 1;
92 lc.cx = rect.right - rect.left - columnSize;
93 lc.cchTextMax = wcslen(szVolume);
94 lc.pszText = szVolume;
95 (void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, 1, (LPARAM)&lc);
96
97 dwDrives = GetLogicalDrives();
98 itemCount = 0;
99 do
100 {
101 if (dwDrives & 0x1)
102 {
103 UINT Type = GetDriveTypeW(szDrive);
104 if (Type == DRIVE_FIXED) //FIXME
105 {
106 if (!GetVolumeInformationW(szDrive, szName, _countof(szName), &dwSerial, &MaxComponent, &Flags, NULL, 0))
107 {
108 szName[0] = 0;
109 dwSerial = -1;
110 }
111
112 swprintf(szVolume, L"%s (%c:)", szName, szDrive[0]);
113 ZeroMemory(&li, sizeof(li));
114 li.mask = LVIF_TEXT | LVIF_PARAM;
115 li.iSubItem = 0;
116 li.pszText = szVolume;
117 li.iItem = itemCount;
118 SendMessageW(hDlgCtrl, LVM_INSERTITEMW, 0, (LPARAM)&li);
119 if (GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes))
120 {
121 if (StrFormatByteSizeW(TotalNumberOfFreeBytes.QuadPart, szVolume, _countof(szVolume)))
122 {
124 if (pItem)
125 {
126 pItem->FreeBytesAvailable = FreeBytesAvailable;
127 pItem->dwSerial = dwSerial;
128
129 swprintf(szName, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\BitBucket\\Volume\\%04X-%04X", LOWORD(dwSerial), HIWORD(dwSerial));
130
131 dwSize = sizeof(DWORD);
133
134 /* Check if the maximum capacity doesn't exceed the available disk space (in megabytes), and truncate it if needed */
135 FreeBytesAvailable.QuadPart = (FreeBytesAvailable.QuadPart / (1024 * 1024));
136 pItem->dwMaxCapacity = min(pItem->dwMaxCapacity, FreeBytesAvailable.LowPart);
137
138 dwSize = sizeof(DWORD);
140
141 li.mask = LVIF_PARAM;
142 li.lParam = (LPARAM)pItem;
143 (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
144 if (szDrive[0] == DefaultDrive)
145 {
146 defIndex = itemCount;
147 pDefault = pItem;
148 }
149 }
150 if (!pFirst)
151 pFirst = pItem;
152
153 li.mask = LVIF_TEXT;
154 li.iSubItem = 1;
155 li.pszText = szVolume;
156 li.iItem = itemCount;
157 (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
158 }
159 }
160 itemCount++;
161 }
162 }
163 szDrive[0]++;
164 dwDrives = (dwDrives >> 1);
165 } while (dwDrives);
166
167 if (!pDefault)
168 pDefault = pFirst;
169 if (pDefault)
170 {
171 toggleNukeOnDeleteOption(hwndDlg, pDefault->dwNukeOnDelete);
172 SetDlgItemInt(hwndDlg, 14002, pDefault->dwMaxCapacity, FALSE);
173 }
174 ZeroMemory(&li, sizeof(li));
175 li.mask = LVIF_STATE;
176 li.stateMask = (UINT)-1;
177 li.state = LVIS_FOCUSED | LVIS_SELECTED;
178 li.iItem = defIndex;
179 (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
180}
181
183{
184 int iCount, iIndex;
185 HWND hDlgCtrl = GetDlgItem(hwndDlg, 14000);
186 LVITEMW li;
188 HKEY hKey, hSubKey;
189 WCHAR szSerial[20];
191
192 if (RegCreateKeyExW(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\BitBucket\\Volume", 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL) != ERROR_SUCCESS)
193 return FALSE;
194
195 iCount = ListView_GetItemCount(hDlgCtrl);
196
197 ZeroMemory(&li, sizeof(li));
198 li.mask = LVIF_PARAM;
199
200 for (iIndex = 0; iIndex < iCount; iIndex++)
201 {
202 li.iItem = iIndex;
203 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
204 {
205 pItem = (PDRIVE_ITEM_CONTEXT)li.lParam;
206 swprintf(szSerial, L"%04X-%04X", LOWORD(pItem->dwSerial), HIWORD(pItem->dwSerial));
207 if (RegCreateKeyExW(hKey, szSerial, 0, NULL, 0, KEY_WRITE, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
208 {
209 dwSize = sizeof(DWORD);
210 RegSetValueExW(hSubKey, L"MaxCapacity", 0, REG_DWORD, (LPBYTE)&pItem->dwMaxCapacity, dwSize);
211 dwSize = sizeof(DWORD);
212 RegSetValueExW(hSubKey, L"NukeOnDelete", 0, REG_DWORD, (LPBYTE)&pItem->dwNukeOnDelete, dwSize);
213 RegCloseKey(hSubKey);
214 }
215 }
216 }
218 return TRUE;
219}
220
222{
223 int iCount, iIndex;
224 HWND hDlgCtrl = GetDlgItem(hwndDlg, 14000);
225 LVITEMW li;
226
227 iCount = ListView_GetItemCount(hDlgCtrl);
228
229 ZeroMemory(&li, sizeof(li));
230 li.mask = LVIF_PARAM;
231
232 for (iIndex = 0; iIndex < iCount; iIndex++)
233 {
234 li.iItem = iIndex;
235 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
236 {
237 HeapFree(GetProcessHeap(), 0, (PVOID)li.lParam);
238 }
239 }
240}
241
242static INT
244{
245 HWND hDlgCtrl;
246 UINT iItemCount, iIndex;
247
248 hDlgCtrl = GetDlgItem(hwndDlg, 14000);
249 if (!hDlgCtrl)
250 return -1;
251
252 iItemCount = ListView_GetItemCount(hDlgCtrl);
253 if (!iItemCount)
254 return -1;
255
256 ZeroMemory(li, sizeof(LVITEMW));
257 li->mask = LVIF_PARAM | LVIF_STATE;
258 li->stateMask = (UINT)-1;
259 for (iIndex = 0; iIndex < iItemCount; iIndex++)
260 {
261 li->iItem = iIndex;
262 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)li))
263 {
264 if (li->state & LVIS_SELECTED)
265 return iIndex;
266 }
267 }
268 return -1;
269}
270
271static INT_PTR CALLBACK
273 HWND hwndDlg,
274 UINT uMsg,
277{
278 LPPSHNOTIFY lppsn;
279 LPNMLISTVIEW lppl;
280 LVITEMW li;
283 UINT uResult;
285 DWORD dwStyle;
286 ULARGE_INTEGER FreeBytesAvailable;
287
288 switch(uMsg)
289 {
290 case WM_INITDIALOG:
292 InitializeRecycleBinDlg(hwndDlg, (WCHAR)page->lParam);
293 SendDlgItemMessage(hwndDlg, 14004, BM_SETCHECK, !SHELL_GetSetting(SSF_NOCONFIRMRECYCLE, fNoConfirmRecycle), 0);
294 dwStyle = (DWORD) SendDlgItemMessage(hwndDlg, 14000, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
295 dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
296 SendDlgItemMessage(hwndDlg, 14000, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
297 if (GetDlgCtrlID((HWND)wParam) != 14000)
298 {
299 SetFocus(GetDlgItem(hwndDlg, 14000));
300 return FALSE;
301 }
302 return TRUE;
303 case WM_COMMAND:
304 switch(LOWORD(wParam))
305 {
306 case 14001:
308 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
309 break;
310 case 14002:
311 if (HIWORD(wParam) == EN_CHANGE)
312 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
313 break;
314 case 14003:
316 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
317 break;
318 case 14004:
319 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
320 break;
321 }
322 break;
323 case WM_NOTIFY:
324 lppsn = (LPPSHNOTIFY) lParam;
325 lppl = (LPNMLISTVIEW) lParam;
326 if (lppsn->hdr.code == PSN_APPLY)
327 {
329 ss.fNoConfirmRecycle = SendDlgItemMessage(hwndDlg, 14004, BM_GETCHECK, 0, 0) == BST_UNCHECKED;
331
332 if (GetDefaultItem(hwndDlg, &li) > -1)
333 {
334 pItem = (PDRIVE_ITEM_CONTEXT)li.lParam;
335 if (pItem)
336 {
337 uResult = GetDlgItemInt(hwndDlg, 14002, &bSuccess, FALSE);
338 if (bSuccess)
339 {
340 /* Check if the maximum capacity doesn't exceed the available disk space (in megabytes), and truncate it if needed */
341 FreeBytesAvailable = pItem->FreeBytesAvailable;
342 FreeBytesAvailable.QuadPart = (FreeBytesAvailable.QuadPart / (1024 * 1024));
343 pItem->dwMaxCapacity = min(uResult, FreeBytesAvailable.LowPart);
344 SetDlgItemInt(hwndDlg, 14002, pItem->dwMaxCapacity, FALSE);
345 }
346 if (SendDlgItemMessageW(hwndDlg, 14003, BM_GETCHECK, 0, 0) == BST_CHECKED)
347 pItem->dwNukeOnDelete = TRUE;
348 else
349 pItem->dwNukeOnDelete = FALSE;
350 }
351 }
352 if (StoreDriveSettings(hwndDlg))
353 {
355 return TRUE;
356 }
357 }
358 else if (lppl->hdr.code == LVN_ITEMCHANGING)
359 {
360 ZeroMemory(&li, sizeof(li));
361 li.mask = LVIF_PARAM;
362 li.iItem = lppl->iItem;
363 if (!SendMessageW(lppl->hdr.hwndFrom, LVM_GETITEMW, 0, (LPARAM)&li))
364 return TRUE;
365
366 pItem = (PDRIVE_ITEM_CONTEXT)li.lParam;
367 if (!pItem)
368 return TRUE;
369
370 if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
371 {
372 /* new focused item */
374 SetDlgItemInt(hwndDlg, 14002, pItem->dwMaxCapacity, FALSE);
375 }
376 else if ((lppl->uOldState & LVIS_FOCUSED) && !(lppl->uNewState & LVIS_FOCUSED))
377 {
378 /* kill focus */
379 uResult = GetDlgItemInt(hwndDlg, 14002, &bSuccess, FALSE);
380 if (bSuccess)
381 {
382 /* Check if the maximum capacity doesn't exceed the available disk space (in megabytes), and truncate it if needed */
383 FreeBytesAvailable = pItem->FreeBytesAvailable;
384 FreeBytesAvailable.QuadPart = (FreeBytesAvailable.QuadPart / (1024 * 1024));
385 pItem->dwMaxCapacity = min(uResult, FreeBytesAvailable.LowPart);
386 SetDlgItemInt(hwndDlg, 14002, pItem->dwMaxCapacity, FALSE);
387 }
388 if (SendDlgItemMessageW(hwndDlg, 14003, BM_GETCHECK, 0, 0) == BST_CHECKED)
389 pItem->dwNukeOnDelete = TRUE;
390 else
391 pItem->dwNukeOnDelete = FALSE;
392 }
393 return TRUE;
394
395 }
396 break;
397 case WM_DESTROY:
398 FreeDriveItemContext(hwndDlg);
399 break;
400 }
401 return FALSE;
402}
403
405{
407 return AddPropSheetPage(hpsp, pfnAddPage, lParam);
408}
#define shell32_hInstance
Type
Definition: Type.h:7
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define RegCloseKey(hKey)
Definition: registry.h:49
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
Definition: reg.c:1931
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 GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CALLBACK
Definition: compat.h:35
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
BOOL WINAPI GetDiskFreeSpaceExW(IN LPCWSTR lpDirectoryName OPTIONAL, OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller, OUT PULARGE_INTEGER lpTotalNumberOfBytes, OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes)
Definition: disk.c:342
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
Definition: disk.c:497
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
Definition: volume.c:226
#define RRF_RT_DWORD
Definition: driver.c:581
static HRESULT AddPropSheetPage(HPROPSHEETPAGE hPage, LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
Definition: precomp.h:150
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
Definition: string.c:2394
#define swprintf
Definition: precomp.h:40
static BOOLEAN bSuccess
Definition: drive.cpp:355
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
LARGE_INTEGER li
Definition: fxtimerapi.cpp:235
#define ss
Definition: i386-dis.c:441
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
if(dx< 0)
Definition: linetemp.h:194
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define min(a, b)
Definition: monoChain.cc:55
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
unsigned int UINT
Definition: ndis.h:50
#define KEY_WRITE
Definition: nt_native.h:1031
#define DWORD
Definition: nt_native.h:44
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
static const WCHAR szName[]
Definition: powrprof.c:45
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSN_APPLY
Definition: prsht.h:117
#define PSNRET_NOERROR
Definition: prsht.h:129
struct _PSHNOTIFY * LPPSHNOTIFY
#define PROPSHEETPAGE
Definition: prsht.h:389
#define LVIF_STATE
Definition: commctrl.h:2317
#define LVCF_WIDTH
Definition: commctrl.h:2592
#define LVM_SETITEMW
Definition: commctrl.h:2402
#define LVN_ITEMCHANGING
Definition: commctrl.h:3135
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2739
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2312
#define LVIS_SELECTED
Definition: commctrl.h:2324
#define LVIF_PARAM
Definition: commctrl.h:2316
struct tagNMLISTVIEW * LPNMLISTVIEW
#define LVM_INSERTCOLUMNW
Definition: commctrl.h:2637
#define LVIF_TEXT
Definition: commctrl.h:2314
#define LVM_GETEXTENDEDLISTVIEWSTYLE
Definition: commctrl.h:2732
#define LVCF_FMT
Definition: commctrl.h:2591
#define LVCF_SUBITEM
Definition: commctrl.h:2594
#define LVM_INSERTITEMW
Definition: commctrl.h:2409
#define LVCF_TEXT
Definition: commctrl.h:2593
#define LVM_GETITEMW
Definition: commctrl.h:2395
#define LVIS_FOCUSED
Definition: commctrl.h:2323
#define LVM_SETEXTENDEDLISTVIEWSTYLE
Definition: commctrl.h:2729
static INT GetDefaultItem(HWND hwndDlg, LVITEMW *li)
static VOID InitializeRecycleBinDlg(HWND hwndDlg, WCHAR DefaultDrive)
struct DRIVE_ITEM_CONTEXT * PDRIVE_ITEM_CONTEXT
HRESULT RecycleBin_AddPropSheetPages(LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
static BOOL StoreDriveSettings(HWND hwndDlg)
static void toggleNukeOnDeleteOption(HWND hwndDlg, BOOL bEnable)
static INT_PTR CALLBACK RecycleBinDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static VOID FreeDriveItemContext(HWND hwndDlg)
#define WM_NOTIFY
Definition: richedit.h:61
#define REG_DWORD
Definition: sdbapi.c:596
VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
Definition: shellord.c:225
#define SHELL_GetSetting(pss, ssf, field)
Definition: shellutils.h:826
#define SSF_NOCONFIRMRECYCLE
Definition: shlobj.h:1618
LPARAM LPFNSVADDPROPSHEETPAGE
Definition: shobjidl.idl:117
#define IDD_RECYCLE_BIN_PROPERTIES
Definition: shresdef.h:400
#define IDS_RECYCLEBIN_DISKSPACE
Definition: shresdef.h:145
#define IDS_RECYCLEBIN_LOCATION
Definition: shresdef.h:144
#define _countof(array)
Definition: sndvol32.h:70
& rect
Definition: startmenu.cpp:1413
ULARGE_INTEGER FreeBytesAvailable
NMHDR hdr
Definition: prsht.h:330
$ULONG LowPart
Definition: ntbasedef.h:577
ULONGLONG QuadPart
Definition: ms-dtyp.idl:185
Definition: module.h:576
int cchTextMax
Definition: commctrl.h:2573
LPWSTR pszText
Definition: commctrl.h:2572
UINT code
Definition: winuser.h:3162
HWND hwndFrom
Definition: winuser.h:3160
UINT uNewState
Definition: commctrl.h:3041
UINT uOldState
Definition: commctrl.h:3042
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT_PTR
Definition: typedefs.h:64
unsigned char * LPBYTE
Definition: typedefs.h:53
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
HPROPSHEETPAGE SH_CreatePropertySheetPage(WORD wDialogId, DLGPROC pfnDlgProc, LPARAM lParam, LPCWSTR pwszTitle)
Definition: propsheet.cpp:208
#define ZeroMemory
Definition: winbase.h:1737
DWORD WINAPI GetLogicalDrives(void)
Definition: disk.c:110
#define DRIVE_FIXED
Definition: winbase.h:278
_In_ BOOL bEnable
Definition: winddi.h:3426
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define BST_UNCHECKED
Definition: winuser.h:199
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define WM_COMMAND
Definition: winuser.h:1743
#define WM_INITDIALOG
Definition: winuser.h:1742
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define BM_SETCHECK
Definition: winuser.h:1924
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HWND WINAPI GetParent(_In_ HWND)
#define DWLP_MSGRESULT
Definition: winuser.h:873
int WINAPI GetDlgCtrlID(_In_ HWND)
#define WM_DESTROY
Definition: winuser.h:1612
UINT WINAPI GetDlgItemInt(_In_ HWND, _In_ int, _Out_opt_ PBOOL, _In_ BOOL)
#define SendDlgItemMessage
Definition: winuser.h:5854
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define BST_CHECKED
Definition: winuser.h:197
#define BM_GETCHECK
Definition: winuser.h:1921
#define EN_CHANGE
Definition: winuser.h:2025
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
__wchar_t WCHAR
Definition: xmlstorage.h:180