ReactOS 0.4.16-dev-1172-g2041f3c
folder_options.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

INT_PTR CALLBACK FolderOptionsGeneralDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK FolderOptionsViewDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK FolderOptionsFileTypesDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HBITMAP Create24BppBitmap (HDC hDC, INT cx, INT cy)
 
HBITMAP BitmapFromIcon (HICON hIcon, INT cx, INT cy)
 

Variables

LPCWSTR g_pszShell32
 
LPCWSTR g_pszSpace
 

Function Documentation

◆ BitmapFromIcon()

HBITMAP BitmapFromIcon ( HICON  hIcon,
INT  cx,
INT  cy 
)

Definition at line 58 of file folder_options.cpp.

59{
61 if (!hDC)
62 return NULL;
63
65 if (!hbm)
66 {
68 return NULL;
69 }
70
71 HGDIOBJ hbmOld = SelectObject(hDC, hbm);
72 {
73 RECT rc = { 0, 0, cx, cy };
74 FillRect(hDC, &rc, HBRUSH(COLOR_3DFACE + 1));
75 if (hIcon)
76 {
77 DrawIconEx(hDC, 0, 0, hIcon, cx, cy, 0, NULL, DI_NORMAL);
78 }
79 }
80 SelectObject(hDC, hbmOld);
82
83 return hbm;
84}
static HDC hDC
Definition: 3dtext.c:33
#define NULL
Definition: types.h:112
HBITMAP Create24BppBitmap(HDC hDC, INT cx, INT cy)
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:88
HICON hIcon
Definition: msconfig.c:44
_In_ HBITMAP hbm
Definition: ntgdi.h:2776
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:586
_Out_opt_ int * cx
Definition: commctrl.h:585
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
#define DI_NORMAL
Definition: wingdi.h:72
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI DrawIconEx(_In_ HDC, _In_ int, _In_ int, _In_ HICON, _In_ int, _In_ int, _In_ UINT, _In_opt_ HBRUSH, _In_ UINT)
Definition: cursoricon.c:2365
#define COLOR_3DFACE
Definition: winuser.h:940

◆ Create24BppBitmap()

HBITMAP Create24BppBitmap ( HDC  hDC,
INT  cx,
INT  cy 
)

Definition at line 41 of file folder_options.cpp.

42{
43 BITMAPINFO bi;
44 LPVOID pvBits;
45
46 ZeroMemory(&bi, sizeof(bi));
48 bi.bmiHeader.biWidth = cx;
50 bi.bmiHeader.biPlanes = 1;
51 bi.bmiHeader.biBitCount = 24;
53
54 HBITMAP hbm = CreateDIBSection(hDC, &bi, DIB_RGB_COLORS, &pvBits, NULL, 0);
55 return hbm;
56}
#define BI_RGB
Definition: precomp.h:56
USHORT biBitCount
Definition: precomp.h:46
ULONG biCompression
Definition: precomp.h:47
BITMAPINFOHEADER bmiHeader
Definition: wingdi.h:1476
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
Definition: bitmap.c:245
#define ZeroMemory
Definition: winbase.h:1744
#define DIB_RGB_COLORS
Definition: wingdi.h:367

Referenced by BitmapFromIcon().

◆ FolderOptionsFileTypesDlg()

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

Definition at line 1872 of file filetypes.cpp.

1877{
1879 if (!pGlobals && uMsg != WM_INITDIALOG)
1880 return FALSE;
1881 LPNMLISTVIEW lppl;
1883 NEWEXT_DIALOG newext;
1884 EDITTYPE_DIALOG edittype;
1885
1886 switch (uMsg)
1887 {
1888 case WM_INITDIALOG:
1891 return TRUE;
1892
1893 case WM_DESTROY:
1894 SetWindowLongPtrW(hwndDlg, DWLP_USER, 0);
1895 if (pGlobals)
1896 {
1897 DestroyIcon(pGlobals->hDefExtIconSmall);
1898 DeleteObject(pGlobals->hOpenWithImage);
1900 }
1901 break;
1902
1903 case WM_COMMAND:
1904 switch (LOWORD(wParam))
1905 {
1906 case IDC_FILETYPES_NEW:
1907 newext.hwndLV = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
1909 hwndDlg, NewExtDlgProc, (LPARAM)&newext))
1910 {
1911 FileTypesDlg_AddExt(hwndDlg, newext.szExt, newext.szFileType, pGlobals);
1912 }
1913 break;
1914
1916 FileTypesDlg_OnDelete(hwndDlg);
1917 break;
1918
1921 if (pEntry)
1922 {
1923 OPENASINFO oai = { pEntry->FileExtension, 0, OAIF_FORCE_REGISTRATION | OAIF_REGISTER_EXT };
1924 if (SUCCEEDED(SHOpenWithDialog(hwndDlg, &oai)))
1925 {
1926 pEntry->InvalidateDefaultApp();
1928 }
1929 }
1930 break;
1931
1933 edittype.hwndLV = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
1934 edittype.pG = pGlobals;
1935 edittype.pEntry = FileTypesDlg_GetEntry(edittype.hwndLV);
1936 if (Normalize(edittype.pEntry))
1937 {
1939 hwndDlg, EditTypeDlgProc, (LPARAM)&edittype);
1940 FileTypesDlg_OnItemChanging(hwndDlg, edittype.pEntry, pGlobals);
1941 }
1942 break;
1943 }
1944 break;
1945
1946 case WM_NOTIFY:
1947 lppl = (LPNMLISTVIEW) lParam;
1948 switch (lppl->hdr.code)
1949 {
1950 case LVN_GETDISPINFO:
1951 {
1954 if (entry && (pLVDI->item.mask & LVIF_TEXT))
1955 {
1956 if (pLVDI->item.iSubItem == 1)
1957 {
1959 pLVDI->item.mask |= LVIF_DI_SETITEM;
1960 }
1961 }
1962 break;
1963 }
1964
1965 case LVN_KEYDOWN:
1966 {
1967 LV_KEYDOWN *pKeyDown = (LV_KEYDOWN *)lParam;
1968 switch (pKeyDown->wVKey)
1969 {
1970 case VK_DELETE:
1971 FileTypesDlg_OnDelete(hwndDlg);
1972 break;
1973 case VK_F5:
1974 FileTypesDlg_Refresh(hwndDlg, pKeyDown->hdr.hwndFrom, pGlobals);
1975 break;
1976 }
1977 break;
1978 }
1979
1980 case NM_DBLCLK:
1982 break;
1983
1984 case LVN_DELETEALLITEMS:
1985 return FALSE; // send LVN_DELETEITEM
1986
1987 case LVN_DELETEITEM:
1989 if (pEntry)
1990 {
1991 pEntry->DestroyIcons();
1992 HeapFree(pGlobals->hHeap, 0, pEntry);
1993 }
1994 return FALSE;
1995
1996 case LVN_ITEMCHANGING:
1998 if (!pEntry)
1999 {
2000 return TRUE;
2001 }
2002
2003 if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
2004 {
2006 }
2007 break;
2008
2009 case LVN_COLUMNCLICK:
2011 break;
2012
2013 case PSN_SETACTIVE:
2014 // On page activation, set the focus to the listview
2016 break;
2017 }
2018 break;
2019 }
2020
2021 return FALSE;
2022}
HRESULT WINAPI SHOpenWithDialog(HWND hwndParent, const OPENASINFO *poainfo)
#define shell32_hInstance
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define HeapFree(x, y, z)
Definition: compat.h:735
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
static LPWSTR GetTypeName(PFILE_TYPE_ENTRY Entry, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:287
static BOOL Normalize(PFILE_TYPE_ENTRY Entry)
Definition: filetypes.cpp:342
static void FileTypesDlg_Sort(PFILE_TYPE_GLOBALS pG, HWND hListView, INT Column=-1)
Definition: filetypes.cpp:1662
static void FileTypesDlg_OnDelete(HWND hwndDlg)
Definition: filetypes.cpp:1809
static INT_PTR CALLBACK NewExtDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: filetypes.cpp:678
static INT_PTR CALLBACK EditTypeDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: filetypes.cpp:1609
static PFILE_TYPE_ENTRY FileTypesDlg_GetEntry(HWND hListView, INT iItem=-1)
Definition: filetypes.cpp:1792
static void FileTypesDlg_Refresh(HWND hwndDlg, HWND hListView, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:1718
struct _FILE_TYPE_GLOBALS * PFILE_TYPE_GLOBALS
static void FileTypesDlg_OnItemChanging(HWND hwndDlg, PFILE_TYPE_ENTRY pEntry, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:1824
static BOOL FileTypesDlg_AddExt(HWND hwndDlg, LPCWSTR pszExt, LPCWSTR pszProgId, PFILE_TYPE_GLOBALS pG)
Definition: filetypes.cpp:804
static PFILE_TYPE_GLOBALS FileTypesDlg_Initialize(HWND hwndDlg)
Definition: filetypes.cpp:1756
struct _FILE_TYPE_ENTRY * PFILE_TYPE_ENTRY
PLIST_ENTRY pEntry
Definition: fxioqueue.cpp:4484
PFX_DRIVER_GLOBALS pGlobals
pKey DeleteObject()
#define SUCCEEDED(hr)
Definition: intsafe.h:50
uint32_t entry
Definition: isohybrid.c:63
if(dx< 0)
Definition: linetemp.h:194
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define LOWORD(l)
Definition: pedump.c:82
#define PSN_SETACTIVE
Definition: prsht.h:115
#define LVN_COLUMNCLICK
Definition: commctrl.h:3144
#define NM_DBLCLK
Definition: commctrl.h:131
#define LVN_DELETEALLITEMS
Definition: commctrl.h:3139
#define LVN_GETDISPINFO
Definition: commctrl.h:3165
#define LVN_ITEMCHANGING
Definition: commctrl.h:3135
struct tagNMLISTVIEW * LPNMLISTVIEW
struct tagLVDISPINFOW * LPNMLVDISPINFOW
#define LVIF_TEXT
Definition: commctrl.h:2314
#define LVN_KEYDOWN
Definition: commctrl.h:3189
#define LV_KEYDOWN
Definition: commctrl.h:3191
#define LVIF_DI_SETITEM
Definition: commctrl.h:3171
#define LVN_DELETEITEM
Definition: commctrl.h:3138
#define LVIS_FOCUSED
Definition: commctrl.h:2323
#define WM_NOTIFY
Definition: richedit.h:61
@ OAIF_REGISTER_EXT
Definition: shlobj.h:2689
@ OAIF_FORCE_REGISTRATION
Definition: shlobj.h:2691
#define IDC_FILETYPES_LISTVIEW
Definition: shresdef.h:469
#define IDD_NEWEXTENSION
Definition: shresdef.h:548
#define IDD_EDITTYPE
Definition: shresdef.h:549
#define IDC_FILETYPES_ADVANCED
Definition: shresdef.h:476
#define IDC_FILETYPES_DELETE
Definition: shresdef.h:471
#define IDC_FILETYPES_CHANGE
Definition: shresdef.h:474
#define IDC_FILETYPES_NEW
Definition: shresdef.h:470
PFILE_TYPE_GLOBALS pG
Definition: filetypes.cpp:363
PFILE_TYPE_ENTRY pEntry
Definition: filetypes.cpp:364
Definition: filetypes.cpp:42
LVITEMW item
Definition: commctrl.h:3184
LPWSTR pszText
Definition: commctrl.h:2370
int iSubItem
Definition: commctrl.h:2367
UINT mask
Definition: commctrl.h:2365
LPARAM lParam
Definition: commctrl.h:2373
UINT code
Definition: winuser.h:3178
HWND hwndFrom
Definition: winuser.h:3176
UINT uNewState
Definition: commctrl.h:3041
UINT uOldState
Definition: commctrl.h:3042
LONG_PTR LPARAM
Definition: windef.h:208
#define DWLP_USER
Definition: winuser.h:883
#define GetWindowLongPtrW
Definition: winuser.h:4848
#define WM_COMMAND
Definition: winuser.h:1759
#define WM_INITDIALOG
Definition: winuser.h:1758
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:841
#define VK_F5
Definition: winuser.h:2278
HWND WINAPI SetFocus(_In_opt_ HWND)
#define SendMessage
Definition: winuser.h:5871
#define VK_DELETE
Definition: winuser.h:2252
#define WM_DESTROY
Definition: winuser.h:1628
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SetWindowLongPtrW
Definition: winuser.h:5374
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2390

◆ FolderOptionsGeneralDlg()

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

Definition at line 332 of file general.cpp.

337{
338 static GENERAL_DIALOG general;
339
340 switch (uMsg)
341 {
342 case WM_INITDIALOG:
343 general.hTaskIcon = NULL;
344 general.hFolderIcon = NULL;
345 general.hClickIcon = NULL;
346 return GeneralDlg_OnInitDialog(hwndDlg, &general);
347
348 case WM_COMMAND:
349 switch (LOWORD(wParam))
350 {
359 if (HIWORD(wParam) == BN_CLICKED)
360 {
361 GeneralDlg_UpdateIcons(hwndDlg, LOWORD(wParam), &general);
362
363 // Enable the 'Apply' button
364 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
365 }
366 break;
368 if (HIWORD(wParam) == BN_CLICKED)
369 {
370 GeneralDlg_OnRestoreDefaults(hwndDlg, &general);
371
372 // Enable the 'Apply' button
373 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
374 }
375 break;
376 }
377 break;
378
379 case WM_NOTIFY:
380 {
381 LPNMHDR pnmh = (LPNMHDR)lParam;
382
383 switch (pnmh->code)
384 {
385 case PSN_SETACTIVE:
386 break;
387
388 case PSN_APPLY:
389 return GeneralDlg_OnApply(hwndDlg, &general);
390 }
391 break;
392 }
393
394 case WM_DESTROY:
395 DestroyIcon(general.hTaskIcon);
396 DestroyIcon(general.hFolderIcon);
397 DestroyIcon(general.hClickIcon);
398 break;
399
400 default:
401 return FALSE;
402 }
403 return FALSE;
404}
static BOOL GeneralDlg_OnInitDialog(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:287
static VOID GeneralDlg_UpdateIcons(HWND hDlg, UINT nCtrlID, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:161
static void GeneralDlg_OnRestoreDefaults(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:303
static BOOL GeneralDlg_OnApply(HWND hwndDlg, PGENERAL_DIALOG pGeneral)
Definition: general.cpp:316
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSN_APPLY
Definition: prsht.h:117
#define IDC_FOLDER_OPTIONS_CLASSICFOLDERS
Definition: shresdef.h:443
#define IDC_FOLDER_OPTIONS_ULBROWSER
Definition: shresdef.h:448
#define IDC_FOLDER_OPTIONS_SINGLECLICK
Definition: shresdef.h:446
#define IDC_FOLDER_OPTIONS_COMMONTASKS
Definition: shresdef.h:442
#define IDC_FOLDER_OPTIONS_SAMEWINDOW
Definition: shresdef.h:444
#define IDC_FOLDER_OPTIONS_DOUBLECLICK
Definition: shresdef.h:447
#define IDC_FOLDER_OPTIONS_ULPOINT
Definition: shresdef.h:449
#define IDC_FOLDER_OPTIONS_RESTORE
Definition: shresdef.h:450
#define IDC_FOLDER_OPTIONS_OWNWINDOW
Definition: shresdef.h:445
HICON hFolderIcon
Definition: general.cpp:156
HICON hClickIcon
Definition: general.cpp:157
HICON hTaskIcon
Definition: general.cpp:155
#define HIWORD(l)
Definition: typedefs.h:247
struct tagNMHDR * LPNMHDR
HWND WINAPI GetParent(_In_ HWND)
#define BN_CLICKED
Definition: winuser.h:1944

◆ FolderOptionsViewDlg()

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

Definition at line 208 of file view.cpp.

213{
215
216 switch (uMsg)
217 {
218 case WM_INITDIALOG:
220
221 case WM_DESTROY:
222 ViewDlg_OnDestroy(hwndDlg);
223 break;
224
225 case WM_COMMAND:
226 switch (LOWORD(wParam))
227 {
228 case IDC_VIEW_RESTORE_DEFAULTS: // Restore Defaults
230 break;
231
234 {
236 bool ResetToDefault = LOWORD(wParam) == IDC_VIEW_RESET_ALL;
238 if (pFO)
239 hr = pFO->ApplyDefFolderSettings(ResetToDefault); // Use IBrowserService2
240 if (ResetToDefault && hr == HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED))
242 if (FAILED(hr))
243 SHELL_ErrorBox(hwndDlg, hr);
244 break;
245 }
246 }
247 break;
248
249 case WM_NOTIFY:
250 switch (LPNMHDR(lParam)->code)
251 {
252 case NM_CLICK: // clicked on treeview
254 break;
255
256 case NM_CUSTOMDRAW: // custom draw (for graying)
259 return Result;
260
261 case TVN_KEYDOWN: // key is down
263 break;
264
265 case PSN_APPLY: // [Apply] is clicked
266 ViewDlg_Apply(hwndDlg);
267 break;
268
269 default:
270 break;
271 }
272 break;
273 }
274
275 return FALSE;
276}
static HRESULT ResetGlobalAndDefViewFolderSettings()
#define ERROR_NOT_SUPPORTED
Definition: compat.h:100
FxFileObject * pFO
#define FAILED(hr)
Definition: intsafe.h:51
#define LPPROPSHEETPAGE
Definition: prsht.h:390
#define TVN_KEYDOWN
Definition: commctrl.h:3718
#define NM_CLICK
Definition: commctrl.h:130
#define NM_CUSTOMDRAW
Definition: commctrl.h:137
#define TV_KEYDOWN
Definition: commctrl.h:3727
#define SHELL_ErrorBox
Definition: shellutils.h:126
HRESULT hr
Definition: shlfolder.c:183
#define IDC_VIEW_RESET_ALL
Definition: shresdef.h:531
#define IDC_VIEW_RESTORE_DEFAULTS
Definition: shresdef.h:533
#define IDC_VIEW_APPLY_TO_ALL
Definition: shresdef.h:530
Definition: inflate.c:139
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT_PTR
Definition: typedefs.h:64
static void ViewDlg_OnTreeViewKeyDown(HWND hwndDlg, TV_KEYDOWN *KeyDown)
Definition: view.cpp:103
static VOID ViewDlg_RestoreDefaults(HWND hwndDlg)
Definition: view.cpp:151
static INT_PTR ViewDlg_OnTreeCustomDraw(HWND hwndDlg, NMTVCUSTOMDRAW *Draw)
Definition: view.cpp:122
static VOID ViewDlg_Apply(HWND hwndDlg)
Definition: view.cpp:188
static BOOL ViewDlg_OnInitDialog(HWND hwndDlg, LPPROPSHEETPAGE psp)
Definition: view.cpp:50
static CFolderOptions * GetFolderOptions(HWND hwndDlg)
Definition: view.cpp:27
static void ViewDlg_OnDestroy(HWND hwndDlg)
Definition: view.cpp:39
static VOID ViewDlg_OnTreeViewClick(HWND hwndDlg)
Definition: view.cpp:84
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define DWLP_MSGRESULT
Definition: winuser.h:881
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Variable Documentation

◆ g_pszShell32

LPCWSTR g_pszShell32
extern

Definition at line 33 of file folder_options.cpp.

Referenced by NoIconsInFile(), Normalize(), and PickIconDlg().

◆ g_pszSpace