ReactOS 0.4.16-dev-1273-g5b94656
folder_options.cpp File Reference
#include "precomp.h"
Include dependency graph for folder_options.cpp:

Go to the source code of this file.

Classes

class  CMSGlobalFolderOptionsStub
 

Macros

#define GlobalFolderOptionsClassName   _T("MSGlobalFolderOptionsStub")
 

Enumerations

enum  { PAGE_GENERAL , PAGE_VIEW , PAGE_FILETYPES }
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (fprop)
 
HBITMAP Create24BppBitmap (HDC hDC, INT cx, INT cy)
 
HBITMAP BitmapFromIcon (HICON hIcon, INT cx, INT cy)
 
EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx (HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj)
 
static int CALLBACK PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 
static DWORD CALLBACK ShowFolderOptionsDialogThreadProc (LPVOID param)
 
VOID WINAPI ShowFolderOptionsDialog (UINT Page, BOOL Async=FALSE)
 
static VOID Options_RunDLLCommon (HWND hWnd, HINSTANCE hInst, int fOptions, DWORD nCmdShow)
 
EXTERN_C VOID WINAPI Options_RunDLL (HWND hWnd, HINSTANCE hInst, LPCSTR cmd, DWORD nCmdShow)
 
EXTERN_C VOID WINAPI Options_RunDLLA (HWND hWnd, HINSTANCE hInst, LPCSTR cmd, DWORD nCmdShow)
 
EXTERN_C VOID WINAPI Options_RunDLLW (HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow)
 

Variables

LPCWSTR g_pszShell32 = L"%SystemRoot%\\system32\\shell32.dll"
 
LPCWSTR g_pszSpace = L" \t\n\r\f\v"
 

Macro Definition Documentation

◆ GlobalFolderOptionsClassName

#define GlobalFolderOptionsClassName   _T("MSGlobalFolderOptionsStub")

Definition at line 92 of file folder_options.cpp.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PAGE_GENERAL 
PAGE_VIEW 
PAGE_FILETYPES 

Definition at line 124 of file folder_options.cpp.

124 {
126 PAGE_VIEW,
128};
@ PAGE_FILETYPES
@ PAGE_VIEW
@ PAGE_GENERAL

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:1753
#define DIB_RGB_COLORS
Definition: wingdi.h:367

Referenced by BitmapFromIcon().

◆ Options_RunDLL()

EXTERN_C VOID WINAPI Options_RunDLL ( HWND  hWnd,
HINSTANCE  hInst,
LPCSTR  cmd,
DWORD  nCmdShow 
)

Definition at line 232 of file folder_options.cpp.

233{
235}
HWND hWnd
Definition: settings.c:17
INT WINAPI StrToIntA(LPCSTR lpszStr)
Definition: string.c:370
HINSTANCE hInst
Definition: dxdiag.c:13
static VOID Options_RunDLLCommon(HWND hWnd, HINSTANCE hInst, int fOptions, DWORD nCmdShow)
Definition: ftp_var.h:139

◆ Options_RunDLLA()

EXTERN_C VOID WINAPI Options_RunDLLA ( HWND  hWnd,
HINSTANCE  hInst,
LPCSTR  cmd,
DWORD  nCmdShow 
)

Definition at line 241 of file folder_options.cpp.

242{
244}

◆ Options_RunDLLCommon()

static VOID Options_RunDLLCommon ( HWND  hWnd,
HINSTANCE  hInst,
int  fOptions,
DWORD  nCmdShow 
)
static

Definition at line 202 of file folder_options.cpp.

203{
204 switch(fOptions)
205 {
206 case 0:
208 break;
209
210 case 1: // Taskbar settings
211#if (NTDDI_VERSION >= NTDDI_VISTA)
212 case 3: // Start menu settings
213 case 4: // Tray icon settings
214 case 6: // Taskbar toolbars
215#endif
217 break;
218
219 case 7: // Windows 8, 10
221 break;
222
223 default:
224 FIXME("unrecognized options id %d\n", fOptions);
225 }
226}
#define FIXME(fmt,...)
Definition: precomp.h:53
VOID WINAPI ShowFolderOptionsDialog(UINT Page, BOOL Async=FALSE)
#define WM_PROGMAN_OPENSHELLSETTINGS
Definition: undocshell.h:63
HWND WINAPI GetShellWindow(void)
Definition: input.c:974
#define PostMessage
Definition: winuser.h:5917

Referenced by Options_RunDLL(), Options_RunDLLA(), and Options_RunDLLW().

◆ Options_RunDLLW()

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

Definition at line 250 of file folder_options.cpp.

251{
253}
INT WINAPI StrToIntW(LPCWSTR lpString)
Definition: string.c:407

◆ PropSheetProc()

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

Definition at line 108 of file folder_options.cpp.

109{
110 // NOTE: This callback is needed to set large icon correctly.
111 HICON hIcon;
112 switch (uMsg)
113 {
114 case PSCB_INITIALIZED:
115 {
117 SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
118 break;
119 }
120 }
121 return 0;
122}
#define shell32_hInstance
static HICON
Definition: imagelist.c:80
#define PSCB_INITIALIZED
Definition: prsht.h:75
#define IDI_SHELL_FOLDER_OPTIONS
Definition: shresdef.h:696
#define ICON_BIG
Definition: tnclass.cpp:51
LONG_PTR LPARAM
Definition: windef.h:208
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2412
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by ShowFolderOptionsDialogThreadProc().

◆ SHCreatePropSheetExtArrayEx()

EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx ( HKEY  hKey,
LPCWSTR  pszSubKey,
UINT  max_iface,
IDataObject pDataObj 
)

◆ ShowFolderOptionsDialog()

VOID WINAPI ShowFolderOptionsDialog ( UINT  Page,
BOOL  Async = FALSE 
)

Definition at line 180 of file folder_options.cpp.

181{
183 if (hWnd)
184 {
186 if (hWnd == GetParent(hPop))
187 {
188 PostMessage(hPop, PSM_SETCURSEL, Page, 0);
189 }
191 return;
192 }
193
195 if (Async)
197 else
198 ShowFolderOptionsDialogThreadProc(param); // Rundll32 caller cannot be async!
199}
BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc, VOID *pData, DWORD dwFlags, LPTHREAD_START_ROUTINE pfnCallback)
Definition: thread.c:356
#define UlongToPtr(u)
Definition: config.h:106
#define GlobalFolderOptionsClassName
static DWORD CALLBACK ShowFolderOptionsDialogThreadProc(LPVOID param)
GLfloat param
Definition: glext.h:5796
_In_ PVOID _Out_opt_ BOOLEAN _Out_opt_ PPFN_NUMBER Page
Definition: mm.h:1306
#define PSM_SETCURSEL
Definition: prsht.h:167
#define FindWindow
Definition: winuser.h:5862
HWND WINAPI GetLastActivePopup(_In_ HWND)
BOOL WINAPI SetForegroundWindow(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)

Referenced by CDesktopBrowser::OnShowOptionsDlg(), and Options_RunDLLCommon().

◆ ShowFolderOptionsDialogThreadProc()

static DWORD CALLBACK ShowFolderOptionsDialogThreadProc ( LPVOID  param)
static

Definition at line 131 of file folder_options.cpp.

132{
133 CCoInit com; // Required when started from rundll32 (IRegTreeOptions, SHAutoComplete (in PickIconDlg))
134 PROPSHEETHEADERW pinfo;
135 HPROPSHEETPAGE hppages[3];
136 HPROPSHEETPAGE hpage;
137 UINT num_pages = 0;
138
140 if (hpage)
141 hppages[num_pages++] = hpage;
142
144 if (hpage)
145 hppages[num_pages++] = hpage;
146
148 if (hpage)
149 hppages[num_pages++] = hpage;
150
151 // the stub window to hide taskbar button
155 if (!stub.Create(NULL, NULL, NULL, style, exstyle))
156 {
157 ERR("stub.Create failed\n");
158 return 0;
159 }
160
161 memset(&pinfo, 0x0, sizeof(PROPSHEETHEADERW));
162 pinfo.dwSize = sizeof(PROPSHEETHEADERW);
163 pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_USEICONID | PSH_USECALLBACK;
164 pinfo.hwndParent = stub;
165 pinfo.nPages = num_pages;
166 pinfo.phpage = hppages;
171 pinfo.nStartPage = PtrToUlong(param);
172
173 PropertySheetW(&pinfo);
174
175 stub.DestroyWindow();
176 return 0;
177}
INT_PTR CALLBACK FolderOptionsViewDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: view.cpp:208
INT_PTR CALLBACK FolderOptionsFileTypesDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: filetypes.cpp:1872
INT_PTR CALLBACK FolderOptionsGeneralDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: general.cpp:351
Arabic default style
Definition: afstyles.h:94
#define ERR(fmt,...)
Definition: precomp.h:57
#define IDS_FOLDER_OPTIONS
Definition: resource.h:135
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
Definition: propsheet.c:2916
#define PtrToUlong(u)
Definition: config.h:107
unsigned long DWORD
Definition: ntddk_ex.h:95
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
unsigned int UINT
Definition: ndis.h:50
#define WS_CAPTION
Definition: pedump.c:624
#define WS_DISABLED
Definition: pedump.c:621
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define PSH_USECALLBACK
Definition: prsht.h:48
#define PSH_USEICONID
Definition: prsht.h:42
struct _PROPSHEETHEADERW PROPSHEETHEADERW
#define memset(x, y, z)
Definition: compat.h:39
#define IDD_FOLDER_OPTIONS_FILETYPES
Definition: shresdef.h:442
#define IDD_FOLDER_OPTIONS_GENERAL
Definition: shresdef.h:440
#define IDD_FOLDER_OPTIONS_VIEW
Definition: shresdef.h:441
HINSTANCE hInstance
Definition: prsht.h:296
DWORD dwSize
Definition: prsht.h:293
DWORD dwFlags
Definition: prsht.h:294
LPCWSTR pszIcon
Definition: prsht.h:299
HWND hwndParent
Definition: prsht.h:295
PFNPROPSHEETCALLBACK pfnCallback
Definition: prsht.h:311
HPROPSHEETPAGE * phpage
Definition: prsht.h:309
UINT nStartPage
Definition: prsht.h:304
LPCWSTR pszCaption
Definition: prsht.h:301
Definition: stubgen.c:11
struct _stub stub
HPROPSHEETPAGE SH_CreatePropertySheetPage(WORD wDialogId, DLGPROC pfnDlgProc, LPARAM lParam, LPCWSTR pwszTitle)
Definition: propsheet.cpp:243
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
#define WS_EX_WINDOWEDGE
Definition: winuser.h:407

Referenced by ShowFolderOptionsDialog().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( fprop  )

Variable Documentation

◆ g_pszShell32

LPCWSTR g_pszShell32 = L"%SystemRoot%\\system32\\shell32.dll"

Definition at line 33 of file folder_options.cpp.

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

◆ g_pszSpace

LPCWSTR g_pszSpace = L" \t\n\r\f\v"