1c2c66affSColin Finck /*
2c2c66affSColin Finck * Copyright (C) the Wine project
3c2c66affSColin Finck *
4c2c66affSColin Finck * This library is free software; you can redistribute it and/or
5c2c66affSColin Finck * modify it under the terms of the GNU Lesser General Public
6c2c66affSColin Finck * License as published by the Free Software Foundation; either
7c2c66affSColin Finck * version 2.1 of the License, or (at your option) any later version.
8c2c66affSColin Finck *
9c2c66affSColin Finck * This library is distributed in the hope that it will be useful,
10c2c66affSColin Finck * but WITHOUT ANY WARRANTY; without even the implied warranty of
11c2c66affSColin Finck * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12c2c66affSColin Finck * Lesser General Public License for more details.
13c2c66affSColin Finck *
14c2c66affSColin Finck * You should have received a copy of the GNU Lesser General Public
15c2c66affSColin Finck * License along with this library; if not, write to the Free Software
16c2c66affSColin Finck * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17c2c66affSColin Finck */
18c2c66affSColin Finck
19c2c66affSColin Finck #ifndef __WINE_SHLOBJ_H
20c2c66affSColin Finck #define __WINE_SHLOBJ_H
21c2c66affSColin Finck
22c2c66affSColin Finck #include <ole2.h>
23c2c66affSColin Finck #include <commctrl.h>
24c2c66affSColin Finck #include <prsht.h>
25c2c66affSColin Finck
26c2c66affSColin Finck #ifndef INITGUID
27c2c66affSColin Finck #include <shlguid.h>
28c2c66affSColin Finck #endif
29c2c66affSColin Finck
30c2c66affSColin Finck #ifdef WINE_NO_UNICODE_MACROS
31c2c66affSColin Finck #undef GetObject
32c2c66affSColin Finck #endif
33c2c66affSColin Finck
34c2c66affSColin Finck #ifdef __cplusplus
35c2c66affSColin Finck extern "C" {
36c2c66affSColin Finck #endif /* defined(__cplusplus) */
37c2c66affSColin Finck
38c2c66affSColin Finck /* Except for specific structs, this header is byte packed */
39c2c66affSColin Finck #include <pshpack1.h>
40c2c66affSColin Finck
41c2c66affSColin Finck #include <shtypes.h>
42c2c66affSColin Finck #include <shobjidl.h>
43c2c66affSColin Finck
44601cdab4SAmine Khaldi #include <pshpack8.h>
45601cdab4SAmine Khaldi
46c2c66affSColin Finck typedef struct
47c2c66affSColin Finck {
48c2c66affSColin Finck DWORD dwSize;
49c2c66affSColin Finck DWORD dwMask;
50c2c66affSColin Finck SHELLVIEWID* pvid;
51c2c66affSColin Finck LPSTR pszWebViewTemplate;
52c2c66affSColin Finck DWORD cchWebViewTemplate;
53c2c66affSColin Finck LPSTR pszWebViewTemplateVersion;
54c2c66affSColin Finck LPSTR pszInfoTip;
55c2c66affSColin Finck DWORD cchInfoTip;
56c2c66affSColin Finck CLSID* pclsid;
57c2c66affSColin Finck DWORD dwFlags;
58c2c66affSColin Finck LPSTR pszIconFile;
59c2c66affSColin Finck DWORD cchIconFile;
60c2c66affSColin Finck int iIconIndex;
61c2c66affSColin Finck LPSTR pszLogo;
62c2c66affSColin Finck DWORD cchLogo;
63c2c66affSColin Finck } SHFOLDERCUSTOMSETTINGSA, *LPSHFOLDERCUSTOMSETTINGSA;
64c2c66affSColin Finck
65c2c66affSColin Finck typedef struct
66c2c66affSColin Finck {
67c2c66affSColin Finck DWORD dwSize;
68c2c66affSColin Finck DWORD dwMask;
69c2c66affSColin Finck SHELLVIEWID* pvid;
70c2c66affSColin Finck LPWSTR pszWebViewTemplate;
71c2c66affSColin Finck DWORD cchWebViewTemplate;
72c2c66affSColin Finck LPWSTR pszWebViewTemplateVersion;
73c2c66affSColin Finck LPWSTR pszInfoTip;
74c2c66affSColin Finck DWORD cchInfoTip;
75c2c66affSColin Finck CLSID* pclsid;
76c2c66affSColin Finck DWORD dwFlags;
77c2c66affSColin Finck LPWSTR pszIconFile;
78c2c66affSColin Finck DWORD cchIconFile;
79c2c66affSColin Finck int iIconIndex;
80c2c66affSColin Finck LPWSTR pszLogo;
81c2c66affSColin Finck DWORD cchLogo;
82c2c66affSColin Finck } SHFOLDERCUSTOMSETTINGSW, *LPSHFOLDERCUSTOMSETTINGSW;
83c2c66affSColin Finck
84601cdab4SAmine Khaldi #include <poppack.h>
85601cdab4SAmine Khaldi
86601cdab4SAmine Khaldi #define FCS_READ 0x00000001
87601cdab4SAmine Khaldi #define FCS_FORCEWRITE 0x00000002
88601cdab4SAmine Khaldi
89601cdab4SAmine Khaldi #define FCSM_ICONFILE 0x00000010
90601cdab4SAmine Khaldi
91c2c66affSColin Finck #ifndef HPSXA_DEFINED
92c2c66affSColin Finck #define HPSXA_DEFINED
93c2c66affSColin Finck DECLARE_HANDLE(HPSXA);
94c2c66affSColin Finck #endif
95c2c66affSColin Finck
96a6bf4abdSAmine Khaldi typedef enum
97a6bf4abdSAmine Khaldi {
98a6bf4abdSAmine Khaldi KF_FLAG_DEFAULT = 0x00000000,
99a6bf4abdSAmine Khaldi KF_FLAG_SIMPLE_IDLIST = 0x00000100,
100a6bf4abdSAmine Khaldi KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200,
101a6bf4abdSAmine Khaldi KF_FLAG_DEFAULT_PATH = 0x00000400,
102a6bf4abdSAmine Khaldi KF_FLAG_INIT = 0x00000800,
103a6bf4abdSAmine Khaldi KF_FLAG_NO_ALIAS = 0x00001000,
104a6bf4abdSAmine Khaldi KF_FLAG_DONT_UNEXPAND = 0x00002000,
105a6bf4abdSAmine Khaldi KF_FLAG_DONT_VERIFY = 0x00004000,
106a6bf4abdSAmine Khaldi KF_FLAG_CREATE = 0x00008000,
107a6bf4abdSAmine Khaldi KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000,
108a6bf4abdSAmine Khaldi KF_FLAG_ALIAS_ONLY = 0x80000000
109a6bf4abdSAmine Khaldi } KNOWN_FOLDER_FLAG;
110a6bf4abdSAmine Khaldi
111c2c66affSColin Finck typedef int GPFIDL_FLAGS;
112c2c66affSColin Finck
11338b7a681SKatayama Hirofumi MZ typedef struct _SFVM_PROPPAGE_DATA
11438b7a681SKatayama Hirofumi MZ {
11538b7a681SKatayama Hirofumi MZ DWORD dwReserved;
11638b7a681SKatayama Hirofumi MZ LPFNADDPROPSHEETPAGE pfn;
11738b7a681SKatayama Hirofumi MZ LPARAM lParam;
11838b7a681SKatayama Hirofumi MZ } SFVM_PROPPAGE_DATA, *LPSFVM_PROPPAGE_DATA;
11938b7a681SKatayama Hirofumi MZ
120c2c66affSColin Finck UINT
121c2c66affSColin Finck WINAPI
122c2c66affSColin Finck SHAddFromPropSheetExtArray(
123c2c66affSColin Finck _In_ HPSXA,
124c2c66affSColin Finck _In_ LPFNADDPROPSHEETPAGE,
125c2c66affSColin Finck LPARAM);
126c2c66affSColin Finck
127c2c66affSColin Finck LPVOID WINAPI SHAlloc(SIZE_T) __WINE_ALLOC_SIZE(1);
128c2c66affSColin Finck
129c2c66affSColin Finck HRESULT
130c2c66affSColin Finck WINAPI
131c2c66affSColin Finck SHCoCreateInstance(
132c2c66affSColin Finck _In_opt_ LPCWSTR,
133c2c66affSColin Finck _In_opt_ const CLSID*,
134c2c66affSColin Finck _In_opt_ IUnknown*,
135c2c66affSColin Finck _In_ REFIID,
136c2c66affSColin Finck _Outptr_ LPVOID*);
137c2c66affSColin Finck
138c2c66affSColin Finck HPSXA WINAPI SHCreatePropSheetExtArray(_In_ HKEY, _In_opt_ LPCWSTR, UINT);
139c2c66affSColin Finck HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
140c2c66affSColin Finck HRESULT WINAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker**);
141c2c66affSColin Finck
142c2c66affSColin Finck HRESULT
143c2c66affSColin Finck WINAPI
144c2c66affSColin Finck SHCreateShellItem(
145ecb3ee54SSuraj K Suresh _In_opt_ PCIDLIST_ABSOLUTE,
146c2c66affSColin Finck _In_opt_ IShellFolder*,
147ecb3ee54SSuraj K Suresh _In_ PCUITEMID_CHILD,
148c2c66affSColin Finck _Outptr_ IShellItem**);
149c2c66affSColin Finck
150c2c66affSColin Finck DWORD WINAPI SHCLSIDFromStringA(_In_ LPCSTR, _Out_ CLSID*);
151c2c66affSColin Finck DWORD WINAPI SHCLSIDFromStringW(_In_ LPCWSTR, _Out_ CLSID*);
152c2c66affSColin Finck #define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)
153c2c66affSColin Finck
154c2c66affSColin Finck HRESULT
155c2c66affSColin Finck WINAPI
156c2c66affSColin Finck SHCreateStdEnumFmtEtc(
157c2c66affSColin Finck _In_ UINT cfmt,
158c2c66affSColin Finck _In_reads_(cfmt) const FORMATETC *,
159c2c66affSColin Finck _Outptr_ IEnumFORMATETC**);
160c2c66affSColin Finck
161c2c66affSColin Finck void WINAPI SHDestroyPropSheetExtArray(_In_ HPSXA);
162ecb3ee54SSuraj K Suresh BOOL WINAPI SHFindFiles(_In_opt_ PCIDLIST_ABSOLUTE, _In_opt_ PCIDLIST_ABSOLUTE);
163c2c66affSColin Finck DWORD WINAPI SHFormatDrive(_In_ HWND, UINT, UINT, UINT);
164c2c66affSColin Finck void WINAPI SHFree(_In_opt_ LPVOID);
165c2c66affSColin Finck
166c2c66affSColin Finck BOOL
167c2c66affSColin Finck WINAPI
168c2c66affSColin Finck GetFileNameFromBrowse(
169c2c66affSColin Finck _In_opt_ HWND,
170c2c66affSColin Finck _Inout_updates_(cchFilePath) LPWSTR,
171c2c66affSColin Finck UINT cchFilePath,
172c2c66affSColin Finck _In_opt_ LPCWSTR,
173c2c66affSColin Finck _In_ LPCWSTR,
174c2c66affSColin Finck _In_opt_ LPCWSTR,
175c2c66affSColin Finck _In_opt_ LPCWSTR);
176c2c66affSColin Finck
177c2c66affSColin Finck _Check_return_ HRESULT WINAPI SHGetInstanceExplorer(_Outptr_ IUnknown**);
178c2c66affSColin Finck
179c2c66affSColin Finck VOID WINAPI SHSetInstanceExplorer(_In_opt_ IUnknown*);
180c2c66affSColin Finck
181c2c66affSColin Finck HRESULT
182c2c66affSColin Finck WINAPI
183c2c66affSColin Finck SHGetFolderPathAndSubDirA(
184c2c66affSColin Finck _Reserved_ HWND,
185c2c66affSColin Finck _In_ int,
186c2c66affSColin Finck _In_opt_ HANDLE,
187c2c66affSColin Finck _In_ DWORD,
188c2c66affSColin Finck _In_opt_ LPCSTR, _Out_writes_(MAX_PATH) LPSTR);
189c2c66affSColin Finck
190c2c66affSColin Finck HRESULT
191c2c66affSColin Finck WINAPI
192c2c66affSColin Finck SHGetFolderPathAndSubDirW(
193c2c66affSColin Finck _Reserved_ HWND,
194c2c66affSColin Finck _In_ int,
195c2c66affSColin Finck _In_opt_ HANDLE,
196c2c66affSColin Finck _In_ DWORD,
197c2c66affSColin Finck _In_opt_ LPCWSTR,
198c2c66affSColin Finck _Out_writes_(MAX_PATH) LPWSTR);
199c2c66affSColin Finck
2009dfb3e8eSKatayama Hirofumi MZ #define SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir)
2019dfb3e8eSKatayama Hirofumi MZ
2029dfb3e8eSKatayama Hirofumi MZ HRESULT WINAPI
2039dfb3e8eSKatayama Hirofumi MZ SHSetFolderPathA(
2049dfb3e8eSKatayama Hirofumi MZ _In_ INT csidl,
2059dfb3e8eSKatayama Hirofumi MZ _In_ HANDLE hToken,
2069dfb3e8eSKatayama Hirofumi MZ _In_ DWORD dwFlags,
2079dfb3e8eSKatayama Hirofumi MZ _In_ LPCSTR pszPath);
2089dfb3e8eSKatayama Hirofumi MZ
2099dfb3e8eSKatayama Hirofumi MZ HRESULT WINAPI
2109dfb3e8eSKatayama Hirofumi MZ SHSetFolderPathW(
2119dfb3e8eSKatayama Hirofumi MZ _In_ INT csidl,
2129dfb3e8eSKatayama Hirofumi MZ _In_ HANDLE hToken,
2139dfb3e8eSKatayama Hirofumi MZ _In_ DWORD dwFlags,
2149dfb3e8eSKatayama Hirofumi MZ _In_ LPCWSTR pszPath);
2159dfb3e8eSKatayama Hirofumi MZ
2169dfb3e8eSKatayama Hirofumi MZ #define SHSetFolderPath WINELIB_NAME_AW(SHSetFolderPath)
2179dfb3e8eSKatayama Hirofumi MZ
2189dfb3e8eSKatayama Hirofumi MZ BOOL WINAPI
2199dfb3e8eSKatayama Hirofumi MZ PathIsSlowA(
2209dfb3e8eSKatayama Hirofumi MZ _In_ LPCSTR pszFile,
2219dfb3e8eSKatayama Hirofumi MZ _In_ DWORD dwAttr);
2229dfb3e8eSKatayama Hirofumi MZ
2239dfb3e8eSKatayama Hirofumi MZ BOOL WINAPI
2249dfb3e8eSKatayama Hirofumi MZ PathIsSlowW(
2259dfb3e8eSKatayama Hirofumi MZ _In_ LPCWSTR pszFile,
2269dfb3e8eSKatayama Hirofumi MZ _In_ DWORD dwAttr);
2279dfb3e8eSKatayama Hirofumi MZ
2289dfb3e8eSKatayama Hirofumi MZ #define PathIsSlow WINELIB_NAME_AW(PathIsSlow)
229c2c66affSColin Finck
230c2c66affSColin Finck _Success_(return != 0)
231c2c66affSColin Finck BOOL
232c2c66affSColin Finck WINAPI
233c2c66affSColin Finck SHGetPathFromIDListA(
234ecb3ee54SSuraj K Suresh _In_ PCIDLIST_ABSOLUTE,
235c2c66affSColin Finck _Out_writes_(MAX_PATH) LPSTR);
236c2c66affSColin Finck
237c2c66affSColin Finck _Success_(return != 0)
238c2c66affSColin Finck BOOL
239c2c66affSColin Finck WINAPI
240c2c66affSColin Finck SHGetPathFromIDListW(
241ecb3ee54SSuraj K Suresh _In_ PCIDLIST_ABSOLUTE,
242c2c66affSColin Finck _Out_writes_(MAX_PATH) LPWSTR);
243c2c66affSColin Finck
244c2c66affSColin Finck #define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
245c2c66affSColin Finck
246ecb3ee54SSuraj K Suresh INT WINAPI SHHandleUpdateImage(_In_ PCIDLIST_ABSOLUTE);
247c2c66affSColin Finck
248c2c66affSColin Finck HRESULT
249c2c66affSColin Finck WINAPI
250c2c66affSColin Finck SHILCreateFromPath(
251ecb3ee54SSuraj K Suresh _In_ PCWSTR,
252ecb3ee54SSuraj K Suresh _Outptr_ PIDLIST_ABSOLUTE*,
253c2c66affSColin Finck _Inout_opt_ DWORD*);
254c2c66affSColin Finck
255c2c66affSColin Finck HRESULT WINAPI SHLoadOLE(LPARAM);
256c2c66affSColin Finck
257c2c66affSColin Finck HRESULT
258c2c66affSColin Finck WINAPI
259c2c66affSColin Finck SHParseDisplayName(
260d40d642fSMark Jansen _In_ PCWSTR pszName,
261d40d642fSMark Jansen _In_opt_ IBindCtx* pbc,
262d40d642fSMark Jansen _Outptr_ PIDLIST_ABSOLUTE* ppidl,
263d40d642fSMark Jansen _In_ SFGAOF sfgaoIn,
264d40d642fSMark Jansen _Out_opt_ SFGAOF* psfgaoOut);
265c2c66affSColin Finck
266c2c66affSColin Finck HRESULT
267c2c66affSColin Finck WINAPI
268c2c66affSColin Finck SHPathPrepareForWriteA(
269c2c66affSColin Finck _In_opt_ HWND,
270c2c66affSColin Finck _In_opt_ IUnknown*,
271c2c66affSColin Finck _In_ LPCSTR, DWORD);
272c2c66affSColin Finck
273c2c66affSColin Finck HRESULT
274c2c66affSColin Finck WINAPI
275c2c66affSColin Finck SHPathPrepareForWriteW(
276c2c66affSColin Finck _In_opt_ HWND,
277c2c66affSColin Finck _In_opt_ IUnknown*,
278c2c66affSColin Finck _In_ LPCWSTR, DWORD);
279c2c66affSColin Finck
2809dfb3e8eSKatayama Hirofumi MZ #define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite)
281c2c66affSColin Finck
282c2c66affSColin Finck UINT
283c2c66affSColin Finck WINAPI
284c2c66affSColin Finck SHReplaceFromPropSheetExtArray(
285c2c66affSColin Finck _In_ HPSXA,
286c2c66affSColin Finck UINT,
287c2c66affSColin Finck _In_ LPFNADDPROPSHEETPAGE,
288c2c66affSColin Finck LPARAM);
289c2c66affSColin Finck
290ecb3ee54SSuraj K Suresh PIDLIST_ABSOLUTE WINAPI SHSimpleIDListFromPath(PCWSTR);
291c2c66affSColin Finck
292c2c66affSColin Finck int
293c2c66affSColin Finck WINAPI
294c2c66affSColin Finck SHMapPIDLToSystemImageListIndex(
295c2c66affSColin Finck _In_ IShellFolder*,
296ecb3ee54SSuraj K Suresh _In_ PCUITEMID_CHILD,
297c2c66affSColin Finck _Out_opt_ int*);
298c2c66affSColin Finck
299c2c66affSColin Finck HRESULT WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD);
300c2c66affSColin Finck VOID WINAPI SHUpdateImageA(_In_ LPCSTR, INT, UINT, INT);
301c2c66affSColin Finck VOID WINAPI SHUpdateImageW(_In_ LPCWSTR, INT, UINT, INT);
302601cdab4SAmine Khaldi #define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage)
303c2c66affSColin Finck
304c2c66affSColin Finck INT
305c2c66affSColin Finck WINAPI
306c2c66affSColin Finck PickIconDlg(
307c2c66affSColin Finck _In_opt_ HWND,
308c2c66affSColin Finck _Inout_updates_(cchIconPath) LPWSTR,
309c2c66affSColin Finck UINT cchIconPath,
310c2c66affSColin Finck _Inout_opt_ int *);
311c2c66affSColin Finck
312601cdab4SAmine Khaldi HRESULT
313601cdab4SAmine Khaldi WINAPI
314601cdab4SAmine Khaldi SHLimitInputEdit(
315601cdab4SAmine Khaldi _In_ HWND hwnd,
316601cdab4SAmine Khaldi _In_ IShellFolder *folder);
317601cdab4SAmine Khaldi
318c2c66affSColin Finck int WINAPI RestartDialog(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD);
319c2c66affSColin Finck int WINAPI RestartDialogEx(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD, DWORD);
320c2c66affSColin Finck int WINAPI DriveType(int);
321c2c66affSColin Finck int WINAPI RealDriveType(int, BOOL);
322c2c66affSColin Finck int WINAPI IsNetDrive(int);
323c2c66affSColin Finck BOOL WINAPI IsUserAnAdmin(void);
324c2c66affSColin Finck
325c2c66affSColin Finck #define KF_FLAG_DEFAULT_PATH 0x00000400
326c2c66affSColin Finck
327c2c66affSColin Finck #define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formattable */
328c2c66affSColin Finck #define SHFMT_CANCEL 0xFFFFFFFEL /* Last format was cancelled */
329c2c66affSColin Finck #define SHFMT_NOFORMAT 0xFFFFFFFDL /* Drive is not formattable */
330c2c66affSColin Finck
331c2c66affSColin Finck /* SHFormatDrive flags */
332c2c66affSColin Finck #define SHFMT_ID_DEFAULT 0xFFFF
333c2c66affSColin Finck #define SHFMT_OPT_FULL 1
334c2c66affSColin Finck #define SHFMT_OPT_SYSONLY 2
335c2c66affSColin Finck
336c2c66affSColin Finck /* SHPathPrepareForWrite flags */
337c2c66affSColin Finck #define SHPPFW_NONE 0x00000000
338c2c66affSColin Finck #define SHPPFW_DIRCREATE 0x00000001
339c2c66affSColin Finck #define SHPPFW_DEFAULT SHPPFW_DIRCREATE
340c2c66affSColin Finck #define SHPPFW_ASKDIRCREATE 0x00000002
341c2c66affSColin Finck #define SHPPFW_IGNOREFILENAME 0x00000004
342c2c66affSColin Finck #define SHPPFW_NOWRITECHECK 0x00000008
343c2c66affSColin Finck #define SHPPFW_MEDIACHECKONLY 0x00000010
344c2c66affSColin Finck
345c2c66affSColin Finck /* SHObjectProperties flags */
346c2c66affSColin Finck #define SHOP_PRINTERNAME 0x01
347c2c66affSColin Finck #define SHOP_FILEPATH 0x02
348c2c66affSColin Finck #define SHOP_VOLUMEGUID 0x04
349c2c66affSColin Finck
350c2c66affSColin Finck BOOL
351c2c66affSColin Finck WINAPI
352c2c66affSColin Finck SHObjectProperties(
353c2c66affSColin Finck _In_opt_ HWND,
354c2c66affSColin Finck _In_ DWORD,
355c2c66affSColin Finck _In_ LPCWSTR,
356c2c66affSColin Finck _In_opt_ LPCWSTR);
357c2c66affSColin Finck
358aee6cbc5SThomas Faber HRESULT
359aee6cbc5SThomas Faber WINAPI
360aee6cbc5SThomas Faber SHOpenFolderAndSelectItems(
361aee6cbc5SThomas Faber _In_ PCIDLIST_ABSOLUTE pidlFolder,
362aee6cbc5SThomas Faber _In_ UINT cidl,
363aee6cbc5SThomas Faber _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY,
364aee6cbc5SThomas Faber _In_ DWORD);
365aee6cbc5SThomas Faber
366c2c66affSColin Finck #define PCS_FATAL 0x80000000
367c2c66affSColin Finck #define PCS_REPLACEDCHAR 0x00000001
368c2c66affSColin Finck #define PCS_REMOVEDCHAR 0x00000002
369c2c66affSColin Finck #define PCS_TRUNCATED 0x00000004
370c2c66affSColin Finck #define PCS_PATHTOOLONG 0x00000008
371c2c66affSColin Finck
372c2c66affSColin Finck int WINAPI PathCleanupSpec(_In_opt_ LPCWSTR, _Inout_ LPWSTR);
373c2c66affSColin Finck
37429e1a41dSKatayama Hirofumi MZ #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) && (_WIN32_WINNT <= _WIN32_WINNT_WS03)
37529e1a41dSKatayama Hirofumi MZ HINSTANCE WINAPI SHGetShellStyleHInstance(VOID);
37629e1a41dSKatayama Hirofumi MZ #endif
37729e1a41dSKatayama Hirofumi MZ
378dcc9a2d8SKatayama Hirofumi MZ BOOL WINAPI
379dcc9a2d8SKatayama Hirofumi MZ SHOpenPropSheetA(
3809dfb3e8eSKatayama Hirofumi MZ _In_opt_ LPCSTR pszCaption,
381dcc9a2d8SKatayama Hirofumi MZ _In_opt_ HKEY *ahKeys,
382dcc9a2d8SKatayama Hirofumi MZ _In_ UINT cKeys,
383dcc9a2d8SKatayama Hirofumi MZ _In_ const CLSID *pclsidDefault,
384dcc9a2d8SKatayama Hirofumi MZ _In_ IDataObject *pDataObject,
385dcc9a2d8SKatayama Hirofumi MZ _In_opt_ IShellBrowser *pShellBrowser,
3869dfb3e8eSKatayama Hirofumi MZ _In_opt_ LPCSTR pszStartPage);
3879dfb3e8eSKatayama Hirofumi MZ
388dcc9a2d8SKatayama Hirofumi MZ BOOL WINAPI
389dcc9a2d8SKatayama Hirofumi MZ SHOpenPropSheetW(
3909dfb3e8eSKatayama Hirofumi MZ _In_opt_ LPCWSTR pszCaption,
391dcc9a2d8SKatayama Hirofumi MZ _In_opt_ HKEY *ahKeys,
392dcc9a2d8SKatayama Hirofumi MZ _In_ UINT cKeys,
393dcc9a2d8SKatayama Hirofumi MZ _In_ const CLSID *pclsidDefault,
394dcc9a2d8SKatayama Hirofumi MZ _In_ IDataObject *pDataObject,
395dcc9a2d8SKatayama Hirofumi MZ _In_opt_ IShellBrowser *pShellBrowser,
3969dfb3e8eSKatayama Hirofumi MZ _In_opt_ LPCWSTR pszStartPage);
3979dfb3e8eSKatayama Hirofumi MZ
3989dfb3e8eSKatayama Hirofumi MZ #define SHOpenPropSheet WINELIB_NAME_AW(SHOpenPropSheet)
399dcc9a2d8SKatayama Hirofumi MZ
400128e7f5aSKatayama Hirofumi MZ HRESULT WINAPI
401128e7f5aSKatayama Hirofumi MZ SHStartNetConnectionDialogA(
402128e7f5aSKatayama Hirofumi MZ _In_ HWND hwnd,
403128e7f5aSKatayama Hirofumi MZ _In_ LPCSTR pszRemoteName,
404128e7f5aSKatayama Hirofumi MZ _In_ DWORD dwType);
405128e7f5aSKatayama Hirofumi MZ
406128e7f5aSKatayama Hirofumi MZ HRESULT WINAPI
407128e7f5aSKatayama Hirofumi MZ SHStartNetConnectionDialogW(
408128e7f5aSKatayama Hirofumi MZ _In_ HWND hwnd,
409128e7f5aSKatayama Hirofumi MZ _In_ LPCWSTR pszRemoteName,
410128e7f5aSKatayama Hirofumi MZ _In_ DWORD dwType);
411128e7f5aSKatayama Hirofumi MZ
412c2c66affSColin Finck /*****************************************************************************
413c2c66affSColin Finck * IContextMenu interface
414c2c66affSColin Finck */
415c2c66affSColin Finck
416c2c66affSColin Finck
417c2c66affSColin Finck /* DATAOBJECT_InitShellIDList*/
418c2c66affSColin Finck #define CFSTR_SHELLIDLISTA "Shell IDList Array" /* CF_IDLIST */
419c2c66affSColin Finck #define CFSTR_SHELLIDLISTOFFSETA "Shell Object Offsets" /* CF_OBJECTPOSITIONS */
420c2c66affSColin Finck #define CFSTR_NETRESOURCESA "Net Resource" /* CF_NETRESOURCE */
421c2c66affSColin Finck /* DATAOBJECT_InitFileGroupDesc */
422c2c66affSColin Finck #define CFSTR_FILEDESCRIPTORA "FileGroupDescriptor" /* CF_FILEGROUPDESCRIPTORA */
423c2c66affSColin Finck /* DATAOBJECT_InitFileContents*/
424c2c66affSColin Finck #define CFSTR_FILECONTENTSA "FileContents" /* CF_FILECONTENTS */
425c2c66affSColin Finck #define CFSTR_FILENAMEA "FileName" /* CF_FILENAMEA */
426c2c66affSColin Finck #define CFSTR_FILENAMEMAPA "FileNameMap" /* CF_FILENAMEMAPA */
427c2c66affSColin Finck #define CFSTR_PRINTERGROUPA "PrinterFriendlyName" /* CF_PRINTERS */
428c2c66affSColin Finck #define CFSTR_SHELLURLA "UniformResourceLocator"
429c2c66affSColin Finck #define CFSTR_INETURLA CFSTR_SHELLURLA
430c2c66affSColin Finck #define CFSTR_PREFERREDDROPEFFECTA "Preferred DropEffect"
431c2c66affSColin Finck #define CFSTR_PERFORMEDDROPEFFECTA "Performed DropEffect"
432c2c66affSColin Finck #define CFSTR_PASTESUCCEEDEDA "Paste Succeeded"
433c2c66affSColin Finck #define CFSTR_INDRAGLOOPA "InShellDragLoop"
434c2c66affSColin Finck #define CFSTR_DRAGCONTEXTA "DragContext"
435c2c66affSColin Finck #define CFSTR_MOUNTEDVOLUMEA "MountedVolume"
436c2c66affSColin Finck #define CFSTR_PERSISTEDDATAOBJECTA "PersistedDataObject"
437c2c66affSColin Finck #define CFSTR_TARGETCLSIDA "TargetCLSID"
438c2c66affSColin Finck #define CFSTR_AUTOPLAY_SHELLIDLISTSA "Autoplay Enumerated IDList Array"
439c2c66affSColin Finck #define CFSTR_LOGICALPERFORMEDDROPEFFECTA "Logical Performed DropEffect"
440c2c66affSColin Finck
441c2c66affSColin Finck #if defined(__GNUC__)
442c2c66affSColin Finck # define CFSTR_SHELLIDLISTW \
443c2c66affSColin Finck (const WCHAR []){ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
444c2c66affSColin Finck # define CFSTR_SHELLIDLISTOFFSETW \
445c2c66affSColin Finck (const WCHAR []){ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 }
446c2c66affSColin Finck # define CFSTR_NETRESOURCESW \
447c2c66affSColin Finck (const WCHAR []){ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 }
448c2c66affSColin Finck # define CFSTR_FILEDESCRIPTORW \
449c2c66affSColin Finck (const WCHAR []){ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 }
450c2c66affSColin Finck # define CFSTR_FILECONTENTSW \
451c2c66affSColin Finck (const WCHAR []){ 'F','i','l','e','C','o','n','t','e','n','t','s',0 }
452c2c66affSColin Finck # define CFSTR_FILENAMEW \
453c2c66affSColin Finck (const WCHAR []){ 'F','i','l','e','N','a','m','e','W',0 }
454c2c66affSColin Finck # define CFSTR_FILENAMEMAPW \
455c2c66affSColin Finck (const WCHAR []){ 'F','i','l','e','N','a','m','e','M','a','p','W',0 }
456c2c66affSColin Finck # define CFSTR_PRINTERGROUPW \
457c2c66affSColin Finck (const WCHAR []){ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 }
458c2c66affSColin Finck # define CFSTR_SHELLURLW \
459c2c66affSColin Finck (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 }
460c2c66affSColin Finck # define CFSTR_INETURLW \
461c2c66affSColin Finck (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 }
462c2c66affSColin Finck # define CFSTR_PREFERREDDROPEFFECTW \
463c2c66affSColin Finck (const WCHAR []){ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
464c2c66affSColin Finck # define CFSTR_PERFORMEDDROPEFFECTW \
465c2c66affSColin Finck (const WCHAR []){ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
466c2c66affSColin Finck # define CFSTR_PASTESUCCEEDEDW \
467c2c66affSColin Finck (const WCHAR []){ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 }
468c2c66affSColin Finck # define CFSTR_INDRAGLOOPW \
469c2c66affSColin Finck (const WCHAR []){ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 }
470c2c66affSColin Finck # define CFSTR_DRAGCONTEXTW \
471c2c66affSColin Finck (const WCHAR []){ 'D','r','a','g','C','o','n','t','e','x','t',0 }
472c2c66affSColin Finck # define CFSTR_MOUNTEDVOLUMEW \
473c2c66affSColin Finck (const WCHAR []){ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 }
474c2c66affSColin Finck # define CFSTR_PERSISTEDDATAOBJECTW \
475c2c66affSColin Finck (const WCHAR []){ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 }
476c2c66affSColin Finck # define CFSTR_TARGETCLSIDW \
477c2c66affSColin Finck (const WCHAR []){ 'T','a','r','g','e','t','C','L','S','I','D',0 }
478c2c66affSColin Finck # define CFSTR_AUTOPLAY_SHELLIDLISTSW \
479c2c66affSColin Finck (const WCHAR []){ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',\
480c2c66affSColin Finck ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
481c2c66affSColin Finck # define CFSTR_LOGICALPERFORMEDDROPEFFECTW \
482c2c66affSColin Finck (const WCHAR []){ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',\
483c2c66affSColin Finck ' ','D','r','o','p','E','f','f','e','c','t',0 }
484c2c66affSColin Finck #elif defined(_MSC_VER)
485c2c66affSColin Finck # define CFSTR_SHELLIDLISTW L"Shell IDList Array"
486c2c66affSColin Finck # define CFSTR_SHELLIDLISTOFFSETW L"Shell Object Offsets"
487c2c66affSColin Finck # define CFSTR_NETRESOURCESW L"Net Resource"
488c2c66affSColin Finck # define CFSTR_FILEDESCRIPTORW L"FileGroupDescriptorW"
489c2c66affSColin Finck # define CFSTR_FILECONTENTSW L"FileContents"
490c2c66affSColin Finck # define CFSTR_FILENAMEW L"FileNameW"
491c2c66affSColin Finck # define CFSTR_FILENAMEMAPW L"FileNameMapW"
492c2c66affSColin Finck # define CFSTR_PRINTERGROUPW L"PrinterFriendlyName"
493c2c66affSColin Finck # define CFSTR_SHELLURLW L"UniformResourceLocator"
494c2c66affSColin Finck # define CFSTR_INETURLW L"UniformResourceLocatorW"
495c2c66affSColin Finck # define CFSTR_PREFERREDDROPEFFECTW L"Preferred DropEffect"
496c2c66affSColin Finck # define CFSTR_PERFORMEDDROPEFFECTW L"Performed DropEffect"
497c2c66affSColin Finck # define CFSTR_PASTESUCCEEDEDW L"Paste Succeeded"
498c2c66affSColin Finck # define CFSTR_INDRAGLOOPW L"InShellDragLoop"
499c2c66affSColin Finck # define CFSTR_DRAGCONTEXTW L"DragContext"
500c2c66affSColin Finck # define CFSTR_MOUNTEDVOLUMEW L"MountedVolume"
501c2c66affSColin Finck # define CFSTR_PERSISTEDDATAOBJECTW L"PersistedDataObject"
502c2c66affSColin Finck # define CFSTR_TARGETCLSIDW L"TargetCLSID"
503c2c66affSColin Finck # define CFSTR_AUTOPLAY_SHELLIDLISTSW L"Autoplay Enumerated IDList Array"
504c2c66affSColin Finck # define CFSTR_LOGICALPERFORMEDDROPEFFECTW L"Logical Performed DropEffect"
505c2c66affSColin Finck #else
506c2c66affSColin Finck static const WCHAR CFSTR_SHELLIDLISTW[] =
507c2c66affSColin Finck { 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
508c2c66affSColin Finck static const WCHAR CFSTR_SHELLIDLISTOFFSETW[] =
509c2c66affSColin Finck { 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 };
510c2c66affSColin Finck static const WCHAR CFSTR_NETRESOURCESW[] =
511c2c66affSColin Finck { 'N','e','t',' ','R','e','s','o','u','r','c','e',0 };
512c2c66affSColin Finck static const WCHAR CFSTR_FILEDESCRIPTORW[] =
513c2c66affSColin Finck { 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 };
514c2c66affSColin Finck static const WCHAR CFSTR_FILECONTENTSW[] =
515c2c66affSColin Finck { 'F','i','l','e','C','o','n','t','e','n','t','s',0 };
516c2c66affSColin Finck static const WCHAR CFSTR_FILENAMEW[] =
517c2c66affSColin Finck { 'F','i','l','e','N','a','m','e','W',0 };
518c2c66affSColin Finck static const WCHAR CFSTR_FILENAMEMAPW[] =
519c2c66affSColin Finck { 'F','i','l','e','N','a','m','e','M','a','p','W',0 };
520c2c66affSColin Finck static const WCHAR CFSTR_PRINTERGROUPW[] =
521c2c66affSColin Finck { 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 };
522c2c66affSColin Finck static const WCHAR CFSTR_SHELLURLW[] =
523c2c66affSColin Finck { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 };
524c2c66affSColin Finck static const WCHAR CFSTR_INETURLW[] =
525c2c66affSColin Finck { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 };
526c2c66affSColin Finck static const WCHAR CFSTR_PREFERREDDROPEFFECTW[] =
527c2c66affSColin Finck { 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
528c2c66affSColin Finck static const WCHAR CFSTR_PERFORMEDDROPEFFECTW[] =
529c2c66affSColin Finck { 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
530c2c66affSColin Finck static const WCHAR CFSTR_PASTESUCCEEDEDW[] =
531c2c66affSColin Finck { 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 };
532c2c66affSColin Finck static const WCHAR CFSTR_INDRAGLOOPW[] =
533c2c66affSColin Finck { 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 };
534c2c66affSColin Finck static const WCHAR CFSTR_DRAGCONTEXTW[] =
535c2c66affSColin Finck { 'D','r','a','g','C','o','n','t','e','x','t',0 };
536c2c66affSColin Finck static const WCHAR CFSTR_MOUNTEDVOLUMEW[] =
537c2c66affSColin Finck { 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 };
538c2c66affSColin Finck static const WCHAR CFSTR_PERSISTEDDATAOBJECTW[] =
539c2c66affSColin Finck { 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 };
540c2c66affSColin Finck static const WCHAR CFSTR_TARGETCLSIDW[] =
541c2c66affSColin Finck { 'T','a','r','g','e','t','C','L','S','I','D',0 };
542c2c66affSColin Finck static const WCHAR CFSTR_AUTOPLAY_SHELLIDLISTSW[] =
543c2c66affSColin Finck { 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',
544c2c66affSColin Finck ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
545c2c66affSColin Finck static const WCHAR CFSTR_LOGICALPERFORMEDDROPEFFECTW[] =
546c2c66affSColin Finck { 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',
547c2c66affSColin Finck ' ','D','r','o','p','E','f','f','e','c','t',0 };
548c2c66affSColin Finck #endif
549c2c66affSColin Finck
550c2c66affSColin Finck #define CFSTR_SHELLIDLIST WINELIB_NAME_AW(CFSTR_SHELLIDLIST)
551c2c66affSColin Finck #define CFSTR_SHELLIDLISTOFFSET WINELIB_NAME_AW(CFSTR_SHELLIDLISTOFFSET)
552c2c66affSColin Finck #define CFSTR_NETRESOURCES WINELIB_NAME_AW(CFSTR_NETRESOURCES)
553c2c66affSColin Finck #define CFSTR_FILEDESCRIPTOR WINELIB_NAME_AW(CFSTR_FILEDESCRIPTOR)
554c2c66affSColin Finck #define CFSTR_FILECONTENTS WINELIB_NAME_AW(CFSTR_FILECONTENTS)
555c2c66affSColin Finck #define CFSTR_FILENAME WINELIB_NAME_AW(CFSTR_FILENAME)
556c2c66affSColin Finck #define CFSTR_FILENAMEMAP WINELIB_NAME_AW(CFSTR_FILENAMEMAP)
557c2c66affSColin Finck #define CFSTR_PRINTERGROUP WINELIB_NAME_AW(CFSTR_PRINTERGROUP)
558c2c66affSColin Finck #define CFSTR_SHELLURL WINELIB_NAME_AW(CFSTR_SHELLURL)
559c2c66affSColin Finck #define CFSTR_INETURL WINELIB_NAME_AW(CFSTR_INETURL)
560c2c66affSColin Finck #define CFSTR_PREFERREDDROPEFFECT WINELIB_NAME_AW(CFSTR_PREFERREDDROPEFFECT)
561c2c66affSColin Finck #define CFSTR_PERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_PERFORMEDDROPEFFECT)
562c2c66affSColin Finck #define CFSTR_PASTESUCCEEDED WINELIB_NAME_AW(CFSTR_PASTESUCCEEDED)
563c2c66affSColin Finck #define CFSTR_INDRAGLOOP WINELIB_NAME_AW(CFSTR_INDRAGLOOP)
564c2c66affSColin Finck #define CFSTR_DRAGCONTEXT WINELIB_NAME_AW(CFSTR_DRAGCONTEXT)
565c2c66affSColin Finck #define CFSTR_MOUNTEDVOLUME WINELIB_NAME_AW(CFSTR_MOUNTEDVOLUME)
566c2c66affSColin Finck #define CFSTR_PERSISTEDDATAOBJECT WINELIB_NAME_AW(CFSTR_PERSISTEDDATAOBJECT)
567c2c66affSColin Finck #define CFSTR_TARGETCLSID WINELIB_NAME_AW(CFSTR_TARGETCLSID)
568c2c66affSColin Finck #define CFSTR_AUTOPLAY_SHELLIDLISTS WINELIB_NAME_AW(CFSTR_AUTOPLAY_SHELLIDLISTS)
569c2c66affSColin Finck #define CFSTR_LOGICALPERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_LOGICALPERFORMEDDROPEFFECT)
570c2c66affSColin Finck
571c2c66affSColin Finck typedef struct
572c2c66affSColin Finck { UINT cidl;
573c2c66affSColin Finck UINT aoffset[1];
574c2c66affSColin Finck } CIDA, *LPIDA;
575c2c66affSColin Finck
576c2c66affSColin Finck /************************************************************************
577c2c66affSColin Finck * IShellView interface
578c2c66affSColin Finck */
579c2c66affSColin Finck
580c2c66affSColin Finck #define FCIDM_SHVIEWFIRST 0x0000
581c2c66affSColin Finck /* undocumented */
582c2c66affSColin Finck #define FCIDM_SHVIEW_ARRANGE 0x7001
583c2c66affSColin Finck #define FCIDM_SHVIEW_DELETE 0x7011
584c2c66affSColin Finck #define FCIDM_SHVIEW_PROPERTIES 0x7013
585c2c66affSColin Finck #define FCIDM_SHVIEW_CUT 0x7018
586c2c66affSColin Finck #define FCIDM_SHVIEW_COPY 0x7019
587c2c66affSColin Finck #define FCIDM_SHVIEW_INSERT 0x701A
588c2c66affSColin Finck #define FCIDM_SHVIEW_UNDO 0x701B
589c2c66affSColin Finck #define FCIDM_SHVIEW_INSERTLINK 0x701C
590c2c66affSColin Finck #define FCIDM_SHVIEW_COPYTO 0x701E
591c2c66affSColin Finck #define FCIDM_SHVIEW_MOVETO 0x701F
592c2c66affSColin Finck #define FCIDM_SHVIEW_SELECTALL 0x7021
593c2c66affSColin Finck #define FCIDM_SHVIEW_INVERTSELECTION 0x7022
594c2c66affSColin Finck
595c2c66affSColin Finck #define FCIDM_SHVIEW_BIGICON 0x7029
596c2c66affSColin Finck #define FCIDM_SHVIEW_SMALLICON 0x702A
597c2c66affSColin Finck #define FCIDM_SHVIEW_LISTVIEW 0x702B
598c2c66affSColin Finck #define FCIDM_SHVIEW_REPORTVIEW 0x702C
599c2c66affSColin Finck /* 0x7030-0x703f are used by the shellbrowser */
600c2c66affSColin Finck #define FCIDM_SHVIEW_AUTOARRANGE 0x7031
601c2c66affSColin Finck #define FCIDM_SHVIEW_SNAPTOGRID 0x7032
602c82ba348SCharles Ambrye #define FCIDM_SHVIEW_ALIGNTOGRID 0x7033
603c2c66affSColin Finck
604c2c66affSColin Finck #define FCIDM_SHVIEW_HELP 0x7041
605c2c66affSColin Finck #define FCIDM_SHVIEW_RENAME 0x7050
606c2c66affSColin Finck #define FCIDM_SHVIEW_CREATELINK 0x7051
607c2c66affSColin Finck #define FCIDM_SHVIEW_NEWLINK 0x7052
608c2c66affSColin Finck #define FCIDM_SHVIEW_NEWFOLDER 0x7053
609c2c66affSColin Finck
610c2c66affSColin Finck #define FCIDM_SHVIEW_REFRESH 0x7100 /* FIXME */
611c2c66affSColin Finck #define FCIDM_SHVIEW_EXPLORE 0x7101 /* FIXME */
612c2c66affSColin Finck #define FCIDM_SHVIEW_OPEN 0x7102 /* FIXME */
613c2c66affSColin Finck
614c2c66affSColin Finck #define FCIDM_SHVIEWLAST 0x7fff
615c2c66affSColin Finck #define FCIDM_BROWSERFIRST 0xA000
616c2c66affSColin Finck /* undocumented toolbar items from stddlg's*/
617c2c66affSColin Finck #define FCIDM_TB_UPFOLDER 0xA001
618c2c66affSColin Finck #define FCIDM_TB_NEWFOLDER 0xA002
619c2c66affSColin Finck #define FCIDM_TB_SMALLICON 0xA003
620c2c66affSColin Finck #define FCIDM_TB_REPORTVIEW 0xA004
621c2c66affSColin Finck #define FCIDM_TB_DESKTOP 0xA005 /* FIXME */
622c2c66affSColin Finck
623c2c66affSColin Finck #define FCIDM_BROWSERLAST 0xbf00
624c2c66affSColin Finck #define FCIDM_GLOBALFIRST 0x8000
625c2c66affSColin Finck #define FCIDM_GLOBALLAST 0x9fff
626c2c66affSColin Finck
627c2c66affSColin Finck /*
628c2c66affSColin Finck * Global submenu IDs and separator IDs
629c2c66affSColin Finck */
630c2c66affSColin Finck #define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000)
631c2c66affSColin Finck #define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
632c2c66affSColin Finck #define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
633c2c66affSColin Finck #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
634c2c66affSColin Finck #define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
635c2c66affSColin Finck #define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
636c2c66affSColin Finck #define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
637c2c66affSColin Finck #define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
638c2c66affSColin Finck #define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
639c2c66affSColin Finck #define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
640c2c66affSColin Finck
641c2c66affSColin Finck /* control IDs known to the view */
642c2c66affSColin Finck #define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0)
643c2c66affSColin Finck #define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1)
644c2c66affSColin Finck
645c2c66affSColin Finck #define INTERFACE IShellDetails
DECLARE_INTERFACE_(IShellDetails,IUnknown)646c2c66affSColin Finck DECLARE_INTERFACE_(IShellDetails, IUnknown)
647c2c66affSColin Finck {
648c2c66affSColin Finck /*** IUnknown methods ***/
649c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
650c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
651c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
652c2c66affSColin Finck /*** IShellDetails methods ***/
653c2c66affSColin Finck STDMETHOD(GetDetailsOf)(THIS_ _In_opt_ PCUITEMID_CHILD pidl, UINT iColumn, _Out_ SHELLDETAILS *pDetails) PURE;
654c2c66affSColin Finck STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE;
655c2c66affSColin Finck };
656c2c66affSColin Finck #undef INTERFACE
657c2c66affSColin Finck
658c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
659c2c66affSColin Finck /*** IUnknown methods ***/
660c2c66affSColin Finck #define IShellDetails_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
661c2c66affSColin Finck #define IShellDetails_AddRef(p) (p)->lpVtbl->AddRef(p)
662c2c66affSColin Finck #define IShellDetails_Release(p) (p)->lpVtbl->Release(p)
663c2c66affSColin Finck /*** IShellDetails methods ***/
664c2c66affSColin Finck #define IShellDetails_GetDetailsOf(p,a,b,c) (p)->lpVtbl->GetDetailsOf(p,a,b,c)
665c2c66affSColin Finck #define IShellDetails_ColumnClick(p,a) (p)->lpVtbl->ColumnClick(p,a)
666c2c66affSColin Finck #endif
667c2c66affSColin Finck
668c2c66affSColin Finck /* IQueryInfo interface */
669c2c66affSColin Finck #define INTERFACE IQueryInfo
DECLARE_INTERFACE_(IQueryInfo,IUnknown)670c2c66affSColin Finck DECLARE_INTERFACE_(IQueryInfo,IUnknown)
671c2c66affSColin Finck {
672c2c66affSColin Finck /*** IUnknown methods ***/
673c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
674c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE;
675c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE;
676c2c66affSColin Finck /*** IQueryInfo methods ***/
677c2c66affSColin Finck STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, _Outptr_ WCHAR** lppTips) PURE;
678c2c66affSColin Finck STDMETHOD(GetInfoFlags)(THIS_ _Out_ DWORD* lpFlags) PURE;
679c2c66affSColin Finck };
680c2c66affSColin Finck #undef INTERFACE
681c2c66affSColin Finck
682c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
683c2c66affSColin Finck /*** IUnknown methods ***/
684c2c66affSColin Finck #define IQueryInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
685c2c66affSColin Finck #define IQueryInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
686c2c66affSColin Finck #define IQueryInfo_Release(p) (p)->lpVtbl->Release(p)
687c2c66affSColin Finck /*** IQueryInfo methods ***/
688c2c66affSColin Finck #define IQueryInfo_GetInfoTip(p,a,b) (p)->lpVtbl->GetInfoTip(p,a,b)
689c2c66affSColin Finck #define IQueryInfo_GetInfoFlags(p,a) (p)->lpVtbl->GetInfoFlags(p,a)
690c2c66affSColin Finck #endif
691c2c66affSColin Finck
692c2c66affSColin Finck /* IInputObject interface */
693c2c66affSColin Finck #define INTERFACE IInputObject
DECLARE_INTERFACE_(IInputObject,IUnknown)694c2c66affSColin Finck DECLARE_INTERFACE_(IInputObject,IUnknown)
695c2c66affSColin Finck {
696c2c66affSColin Finck /*** IUnknown methods ***/
697c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
698c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE;
699c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE;
700c2c66affSColin Finck /*** IInputObject methods ***/
701c2c66affSColin Finck STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE;
702c2c66affSColin Finck STDMETHOD(HasFocusIO)(THIS) PURE;
703c2c66affSColin Finck STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE;
704c2c66affSColin Finck };
705c2c66affSColin Finck #undef INTERFACE
706c2c66affSColin Finck
707c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
708c2c66affSColin Finck /*** IUnknown methods ***/
709c2c66affSColin Finck #define IInputObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
710c2c66affSColin Finck #define IInputObject_AddRef(p) (p)->lpVtbl->AddRef(p)
711c2c66affSColin Finck #define IInputObject_Release(p) (p)->lpVtbl->Release(p)
712c2c66affSColin Finck /*** IInputObject methods ***/
713c2c66affSColin Finck #define IInputObject_UIActivateIO(p,a,b) (p)->lpVtbl->UIActivateIO(p,a,b)
714c2c66affSColin Finck #define IInputObject_HasFocusIO(p) (p)->lpVtbl->HasFocusIO(p)
715c2c66affSColin Finck #define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a)
716c2c66affSColin Finck #endif
717c2c66affSColin Finck
718c2c66affSColin Finck /* IInputObjectSite interface */
719c2c66affSColin Finck #define INTERFACE IInputObjectSite
DECLARE_INTERFACE_(IInputObjectSite,IUnknown)720c2c66affSColin Finck DECLARE_INTERFACE_(IInputObjectSite,IUnknown)
721c2c66affSColin Finck {
722c2c66affSColin Finck /*** IUnknown methods ***/
723c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
724c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
725c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
726c2c66affSColin Finck /*** IInputObjectSite methods ***/
727c2c66affSColin Finck STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE;
728c2c66affSColin Finck };
729c2c66affSColin Finck #undef INTERFACE
730c2c66affSColin Finck
731c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
732c2c66affSColin Finck /*** IUnknown methods ***/
733c2c66affSColin Finck #define IInputObjectSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
734c2c66affSColin Finck #define IInputObjectSite_AddRef(p) (p)->lpVtbl->AddRef(p)
735c2c66affSColin Finck #define IInputObjectSite_Release(p) (p)->lpVtbl->Release(p)
736c2c66affSColin Finck /*** IInputObject methods ***/
737c2c66affSColin Finck #define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b)
738c2c66affSColin Finck #endif
739c2c66affSColin Finck
740c2c66affSColin Finck /* IObjMgr interface */
741c2c66affSColin Finck #define INTERFACE IObjMgr
DECLARE_INTERFACE_(IObjMgr,IUnknown)742c2c66affSColin Finck DECLARE_INTERFACE_(IObjMgr,IUnknown)
743c2c66affSColin Finck {
744c2c66affSColin Finck /*** IUnknown methods ***/
745c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
746c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
747c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
748c2c66affSColin Finck /*** IObjMgr methods ***/
749c2c66affSColin Finck STDMETHOD(Append)(THIS_ _In_ LPUNKNOWN punk) PURE;
750c2c66affSColin Finck STDMETHOD(Remove)(THIS_ _In_ LPUNKNOWN punk) PURE;
751c2c66affSColin Finck };
752c2c66affSColin Finck #undef INTERFACE
753c2c66affSColin Finck
754c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
755c2c66affSColin Finck /*** IUnknown methods ***/
756c2c66affSColin Finck #define IObjMgr_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
757c2c66affSColin Finck #define IObjMgr_AddRef(p) (p)->lpVtbl->AddRef(p)
758c2c66affSColin Finck #define IObjMgr_Release(p) (p)->lpVtbl->Release(p)
759c2c66affSColin Finck /*** IObjMgr methods ***/
760c2c66affSColin Finck #define IObjMgr_Append(p,a) (p)->lpVtbl->Append(p,a)
761c2c66affSColin Finck #define IObjMgr_Remove(p,a) (p)->lpVtbl->Remove(p,a)
762c2c66affSColin Finck #endif
763c2c66affSColin Finck
764c2c66affSColin Finck /* ICurrentWorkingDirectory interface */
765c2c66affSColin Finck #define INTERFACE ICurrentWorkingDirectory
DECLARE_INTERFACE_(ICurrentWorkingDirectory,IUnknown)766c2c66affSColin Finck DECLARE_INTERFACE_(ICurrentWorkingDirectory,IUnknown)
767c2c66affSColin Finck {
768c2c66affSColin Finck /*** IUnknown methods ***/
769c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
770c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
771c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
772c2c66affSColin Finck /*** ICurrentWorkingDirectory methods ***/
773c2c66affSColin Finck STDMETHOD(GetDirectory)(THIS_ _Out_writes_(cchSize) PWSTR pwzPath, DWORD cchSize) PURE;
774c2c66affSColin Finck STDMETHOD(SetDirectory)(THIS_ _In_ PCWSTR pwzPath) PURE;
775c2c66affSColin Finck };
776c2c66affSColin Finck #undef INTERFACE
777c2c66affSColin Finck
778c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
779c2c66affSColin Finck /*** IUnknown methods ***/
780c2c66affSColin Finck #define ICurrentWorkingDirectory_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
781c2c66affSColin Finck #define ICurrentWorkingDirectory_AddRef(p) (p)->lpVtbl->AddRef(p)
782c2c66affSColin Finck #define ICurrentWorkingDirectory_Release(p) (p)->lpVtbl->Release(p)
783c2c66affSColin Finck /*** ICurrentWorkingDirectory methods ***/
784c2c66affSColin Finck #define ICurrentWorkingDirectory_GetDirectory(p,a,b) (p)->lpVtbl->GetDirectory(p,a,b)
785c2c66affSColin Finck #define ICurrentWorkingDirectory_SetDirectory(p,a) (p)->lpVtbl->SetDirectory(p,a)
786c2c66affSColin Finck #endif
787c2c66affSColin Finck
788c2c66affSColin Finck /* IACList interface */
789c2c66affSColin Finck #define INTERFACE IACList
DECLARE_INTERFACE_(IACList,IUnknown)790c2c66affSColin Finck DECLARE_INTERFACE_(IACList,IUnknown)
791c2c66affSColin Finck {
792c2c66affSColin Finck /*** IUnknown methods ***/
793c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
794c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
795c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
796c2c66affSColin Finck /*** IACList methods ***/
797c2c66affSColin Finck STDMETHOD(Expand)(THIS_ _In_ LPCOLESTR str) PURE;
798c2c66affSColin Finck };
799c2c66affSColin Finck #undef INTERFACE
800c2c66affSColin Finck
801c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
802c2c66affSColin Finck /*** IUnknown methods ***/
803c2c66affSColin Finck #define IACList_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
804c2c66affSColin Finck #define IACList_AddRef(p) (p)->lpVtbl->AddRef(p)
805c2c66affSColin Finck #define IACList_Release(p) (p)->lpVtbl->Release(p)
806c2c66affSColin Finck /*** IACList methods ***/
807c2c66affSColin Finck #define IACList_Expand(p,a) (p)->lpVtbl->Expand(p,a)
808c2c66affSColin Finck #endif
809c2c66affSColin Finck
810c2c66affSColin Finck /* IACList2 interface */
811c2c66affSColin Finck
812c2c66affSColin Finck #define ACLO_NONE 0x00000000
813c2c66affSColin Finck #define ACLO_CURRENTDIR 0x00000001
814c2c66affSColin Finck #define ACLO_MYCOMPUTER 0x00000002
815c2c66affSColin Finck #define ACLO_DESKTOP 0x00000004
816c2c66affSColin Finck #define ACLO_FAVORITES 0x00000008
817c2c66affSColin Finck #define ACLO_FILESYSONLY 0x00000010
818c2c66affSColin Finck #define ACLO_FILESYSDIRS 0x00000020
819c2c66affSColin Finck
820c2c66affSColin Finck #define INTERFACE IACList2
DECLARE_INTERFACE_(IACList2,IACList)821c2c66affSColin Finck DECLARE_INTERFACE_(IACList2,IACList)
822c2c66affSColin Finck {
823c2c66affSColin Finck /*** IUnknown methods ***/
824c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
825c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
826c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
827c2c66affSColin Finck /*** IACList methods ***/
828c2c66affSColin Finck STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
829c2c66affSColin Finck /*** IACList2 methods ***/
830c2c66affSColin Finck STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE;
831c2c66affSColin Finck STDMETHOD(GetOptions)(THIS_ _Out_ DWORD* pdwFlag) PURE;
832c2c66affSColin Finck };
833c2c66affSColin Finck #undef INTERFACE
834c2c66affSColin Finck
835c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
836c2c66affSColin Finck /*** IUnknown methods ***/
837c2c66affSColin Finck #define IACList2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
838c2c66affSColin Finck #define IACList2_AddRef(p) (p)->lpVtbl->AddRef(p)
839c2c66affSColin Finck #define IACList2_Release(p) (p)->lpVtbl->Release(p)
840c2c66affSColin Finck /*** IACList2 methods ***/
841c2c66affSColin Finck #define IACList2_GetOptions(p,a) (p)->lpVtbl->GetOptions(p,a)
842c2c66affSColin Finck #define IACList2_SetOptions(p,a) (p)->lpVtbl->SetOptions(p,a)
843c2c66affSColin Finck #endif
844c2c66affSColin Finck
845c2c66affSColin Finck /****************************************************************************
846c2c66affSColin Finck * IShellFolderViewCB interface
847c2c66affSColin Finck */
848c2c66affSColin Finck
849c2c66affSColin Finck #define INTERFACE IShellFolderViewCB
DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown)850c2c66affSColin Finck DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown)
851c2c66affSColin Finck {
852c2c66affSColin Finck /*** IUnknown methods ***/
853c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
854c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE;
855c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE;
856c2c66affSColin Finck /*** IShellFolderViewCB methods ***/
857c2c66affSColin Finck STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
858c2c66affSColin Finck };
859c2c66affSColin Finck #undef INTERFACE
860c2c66affSColin Finck
861c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
862c2c66affSColin Finck /*** IUnknown methods ***/
863c2c66affSColin Finck #define IShellFolderViewCB_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
864c2c66affSColin Finck #define IShellFolderViewCB_AddRef(p) (p)->lpVtbl->AddRef(p)
865c2c66affSColin Finck #define IShellFolderViewCB_Release(p) (p)->lpVtbl->Release(p)
866c2c66affSColin Finck /*** IShellFolderViewCB methods ***/
867c2c66affSColin Finck #define IShellFolderViewCB_MessageSFVCB(p,a,b,c) (p)->lpVtbl->MessageSFVCB(p,a,b,c)
868c2c66affSColin Finck #endif
869c2c66affSColin Finck
870c2c66affSColin Finck /****************************************************************************
871c2c66affSColin Finck * IShellFolderView interface
872c2c66affSColin Finck */
873c2c66affSColin Finck
874c2c66affSColin Finck #include <pshpack8.h>
875c2c66affSColin Finck
876c2c66affSColin Finck typedef struct _ITEMSPACING
877c2c66affSColin Finck {
878c2c66affSColin Finck int cxSmall;
879c2c66affSColin Finck int cySmall;
880c2c66affSColin Finck int cxLarge;
881c2c66affSColin Finck int cyLarge;
882c2c66affSColin Finck } ITEMSPACING;
883c2c66affSColin Finck
884c2c66affSColin Finck #include <poppack.h>
885c2c66affSColin Finck
886c2c66affSColin Finck #define INTERFACE IShellFolderView
887c2c66affSColin Finck DEFINE_GUID(IID_IShellFolderView,0x37a378c0,0xf82d,0x11ce,0xae,0x65,0x08,0x00,0x2b,0x2e,0x12,0x62);
DECLARE_INTERFACE_(IShellFolderView,IUnknown)888c2c66affSColin Finck DECLARE_INTERFACE_(IShellFolderView, IUnknown)
889c2c66affSColin Finck {
890c2c66affSColin Finck /*** IUnknown methods ***/
891c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
892c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
893c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
894c2c66affSColin Finck
895c2c66affSColin Finck /*** IShellFolderView methods ***/
896c2c66affSColin Finck STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE;
897c2c66affSColin Finck STDMETHOD(GetArrangeParam) (THIS_ _Out_ LPARAM *plParamSort) PURE;
898c2c66affSColin Finck STDMETHOD(ArrangeGrid) (THIS) PURE;
899c2c66affSColin Finck STDMETHOD(AutoArrange) (THIS) PURE;
900c2c66affSColin Finck STDMETHOD(GetAutoArrange) (THIS) PURE;
901c2c66affSColin Finck STDMETHOD(AddObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
902c2c66affSColin Finck STDMETHOD(GetObject) (THIS_ _Outptr_ PITEMID_CHILD *ppidl, UINT uItem) PURE;
903c2c66affSColin Finck STDMETHOD(RemoveObject) (THIS_ _In_opt_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
904c2c66affSColin Finck STDMETHOD(GetObjectCount) (THIS_ _Out_ UINT *puCount) PURE;
905c2c66affSColin Finck STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE;
906c2c66affSColin Finck STDMETHOD(UpdateObject) (THIS_ _In_ PITEMID_CHILD pidlOld, _In_ PITEMID_CHILD pidlNew, _Out_ UINT *puItem) PURE;
907c2c66affSColin Finck STDMETHOD(RefreshObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
908c2c66affSColin Finck STDMETHOD(SetRedraw) (THIS_ BOOL bRedraw) PURE;
909c2c66affSColin Finck STDMETHOD(GetSelectedCount) (THIS_ _Out_ UINT *puSelected) PURE;
910c2c66affSColin Finck STDMETHOD(GetSelectedObjects) (THIS_ _Outptr_result_buffer_(*puItems) PCUITEMID_CHILD **pppidl, _Out_ UINT *puItems) PURE;
911c2c66affSColin Finck STDMETHOD(IsDropOnSource) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE;
912c2c66affSColin Finck STDMETHOD(GetDragPoint) (THIS_ _Out_ POINT *ppt) PURE;
913c2c66affSColin Finck STDMETHOD(GetDropPoint) (THIS_ _Out_ POINT *ppt) PURE;
914c2c66affSColin Finck STDMETHOD(MoveIcons) (THIS_ _In_ IDataObject *pDataObject) PURE;
915c2c66affSColin Finck STDMETHOD(SetItemPos) (THIS_ _In_ PCUITEMID_CHILD pidl, _In_ POINT *ppt) PURE;
916c2c66affSColin Finck STDMETHOD(IsBkDropTarget) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE;
917c2c66affSColin Finck STDMETHOD(SetClipboard) (THIS_ BOOL bMove) PURE;
918c2c66affSColin Finck STDMETHOD(SetPoints) (THIS_ _In_ IDataObject *pDataObject) PURE;
919c2c66affSColin Finck STDMETHOD(GetItemSpacing) (THIS_ _Out_ ITEMSPACING *pSpacing) PURE;
920c2c66affSColin Finck STDMETHOD(SetCallback) (THIS_ _In_opt_ IShellFolderViewCB* pNewCB, _Outptr_result_maybenull_ IShellFolderViewCB** ppOldCB) PURE;
921c2c66affSColin Finck STDMETHOD(Select) ( THIS_ UINT dwFlags ) PURE;
922c2c66affSColin Finck STDMETHOD(QuerySupport) (THIS_ _Inout_ UINT * pdwSupport) PURE;
923c2c66affSColin Finck STDMETHOD(SetAutomationObject)(THIS_ _In_opt_ IDispatch* pdisp) PURE;
924c2c66affSColin Finck };
925c2c66affSColin Finck #undef INTERFACE
926c2c66affSColin Finck
927c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
928c2c66affSColin Finck /*** IUnknown methods ***/
929c2c66affSColin Finck #define IShellFolderView_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
930c2c66affSColin Finck #define IShellFolderView_AddRef(p) (p)->lpVtbl->AddRef(p)
931c2c66affSColin Finck #define IShellFolderView_Release(p) (p)->lpVtbl->Release(p)
932c2c66affSColin Finck /*** IShellFolderView methods ***/
933c2c66affSColin Finck #define IShellFolderView_Rearrange(p,a) (p)->lpVtbl->Rearrange(p,a)
934c2c66affSColin Finck #define IShellFolderView_GetArrangeParam(p,a) (p)->lpVtbl->GetArrangeParam(p,a)
935c2c66affSColin Finck #define IShellFolderView_ArrangeGrid(p) (p)->lpVtbl->ArrangeGrid(p)
936c2c66affSColin Finck #define IShellFolderView_AutoArrange(p) (p)->lpVtbl->AutoArrange(p)
937c2c66affSColin Finck #define IShellFolderView_GetAutoArrange(p) (p)->lpVtbl->GetAutoArrange(p)
938c2c66affSColin Finck #define IShellFolderView_AddObject(p,a,b) (p)->lpVtbl->AddObject(p,a,b)
939c2c66affSColin Finck #define IShellFolderView_GetObject(p,a,b) (p)->lpVtbl->GetObject(p,a,b)
940c2c66affSColin Finck #define IShellFolderView_RemoveObject(p,a,b) (p)->lpVtbl->RemoveObject(p,a,b)
941c2c66affSColin Finck #define IShellFolderView_GetObjectCount(p,a) (p)->lpVtbl->GetObjectCount(p,a)
942c2c66affSColin Finck #define IShellFolderView_SetObjectCount(p,a,b) (p)->lpVtbl->SetObjectCount(p,a,b)
943c2c66affSColin Finck #define IShellFolderView_UpdateObject(p,a,b,c) (p)->lpVtbl->UpdateObject(p,a,b,c)
944c2c66affSColin Finck #define IShellFolderView_RefreshObject(p,a,b) (p)->lpVtbl->RefreshObject(p,a,b)
945c2c66affSColin Finck #define IShellFolderView_SetRedraw(p,a) (p)->lpVtbl->SetRedraw(p,a)
946c2c66affSColin Finck #define IShellFolderView_GetSelectedCount(p,a) (p)->lpVtbl->GetSelectedCount(p,a)
947c2c66affSColin Finck #define IShellFolderView_GetSelectedObjects(p,a,b) (p)->lpVtbl->GetSelectedObjects(p,a,b)
948c2c66affSColin Finck #define IShellFolderView_IsDropOnSource(p,a) (p)->lpVtbl->IsDropOnSource(p,a)
949c2c66affSColin Finck #define IShellFolderView_GetDragPoint(p,a) (p)->lpVtbl->GetDragPoint(p,a)
950c2c66affSColin Finck #define IShellFolderView_GetDropPoint(p,a) (p)->lpVtbl->GetDropPoint(p,a)
951c2c66affSColin Finck #define IShellFolderView_MoveIcons(p,a) (p)->lpVtbl->MoveIcons(p,a)
952c2c66affSColin Finck #define IShellFolderView_SetItemPos(p,a,b) (p)->lpVtbl->SetItemPos(p,a,b)
953c2c66affSColin Finck #define IShellFolderView_DropTarget(p,a) (p)->lpVtbl->DropTarget(p,a)
954c2c66affSColin Finck #define IShellFolderView_SetClipboard(p,a) (p)->lpVtbl->SetClipboard(p,a)
955c2c66affSColin Finck #define IShellFolderView_SetPoints(p,a) (p)->lpVtbl->SetPoints(p,a)
956c2c66affSColin Finck #define IShellFolderView_GetItemSpacing(p,a) (p)->lpVtbl->GetItemSpacing(p,a)
957c2c66affSColin Finck #define IShellFolderView_SetCallback(p,a) (p)->lpVtbl->SetCallback(p,a)
958c2c66affSColin Finck #define IShellFolderView_Select(p,a) (p)->lpVtbl->Select(p,a)
959c2c66affSColin Finck #define IShellFolderView_QuerySupport(p,a) (p)->lpVtbl->QuerySupport(p,a)
960c2c66affSColin Finck #define IShellFolderView_SetAutomationObject(p,a) (p)->lpVtbl->SetAutomationObject(p,a)
961c2c66affSColin Finck #endif
962c2c66affSColin Finck
963c2c66affSColin Finck /* IProgressDialog interface */
964c2c66affSColin Finck #define PROGDLG_NORMAL 0x00000000
965c2c66affSColin Finck #define PROGDLG_MODAL 0x00000001
966c2c66affSColin Finck #define PROGDLG_AUTOTIME 0x00000002
967c2c66affSColin Finck #define PROGDLG_NOTIME 0x00000004
968c2c66affSColin Finck #define PROGDLG_NOMINIMIZE 0x00000008
969c2c66affSColin Finck #define PROGDLG_NOPROGRESSBAR 0x00000010
970c2c66affSColin Finck #define PROGDLG_MARQUEEPROGRESS 0x00000020
971c2c66affSColin Finck #define PROGDLG_NOCANCEL 0x00000040
972c2c66affSColin Finck
973c2c66affSColin Finck #define PDTIMER_RESET 0x00000001
974c2c66affSColin Finck #define PDTIMER_PAUSE 0x00000002
975c2c66affSColin Finck #define PDTIMER_RESUME 0x00000003
976c2c66affSColin Finck
977c2c66affSColin Finck #define INTERFACE IProgressDialog
DECLARE_INTERFACE_(IProgressDialog,IUnknown)978c2c66affSColin Finck DECLARE_INTERFACE_(IProgressDialog,IUnknown)
979c2c66affSColin Finck {
980c2c66affSColin Finck /*** IUnknown methods ***/
981c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
982c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
983c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
984c2c66affSColin Finck /*** IProgressDialog methods ***/
985c2c66affSColin Finck STDMETHOD(StartProgressDialog)(THIS_ _In_opt_ HWND hwndParent, _In_opt_ IUnknown *punkEnableModeless, DWORD dwFlags, _Reserved_ LPCVOID reserved) PURE;
986c2c66affSColin Finck STDMETHOD(StopProgressDialog)(THIS) PURE;
987c2c66affSColin Finck STDMETHOD(SetTitle)(THIS_ _In_ LPCWSTR pwzTitle) PURE;
988c2c66affSColin Finck STDMETHOD(SetAnimation)(THIS_ _In_opt_ HINSTANCE hInstance, UINT uiResourceId) PURE;
989c2c66affSColin Finck STDMETHOD_(BOOL,HasUserCancelled)(THIS) PURE;
990c2c66affSColin Finck STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE;
991c2c66affSColin Finck STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE;
992c2c66affSColin Finck STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, _In_ LPCWSTR pwzString, BOOL bPath, _Reserved_ LPCVOID reserved) PURE;
993c2c66affSColin Finck STDMETHOD(SetCancelMsg)(THIS_ _In_ LPCWSTR pwzCancelMsg, _Reserved_ LPCVOID reserved) PURE;
994c2c66affSColin Finck STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, _Reserved_ LPCVOID reserved) PURE;
995c2c66affSColin Finck };
996c2c66affSColin Finck #undef INTERFACE
997c2c66affSColin Finck
998c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
999c2c66affSColin Finck /*** IUnknown methods ***/
1000c2c66affSColin Finck #define IProgressDialog_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1001c2c66affSColin Finck #define IProgressDialog_AddRef(p) (p)->lpVtbl->AddRef(p)
1002c2c66affSColin Finck #define IProgressDialog_Release(p) (p)->lpVtbl->Release(p)
1003c2c66affSColin Finck /*** IProgressDialog methods ***/
1004c2c66affSColin Finck #define IProgressDialog_StartProgressDialog(p,a,b,c,d) (p)->lpVtbl->StartProgressDialog(p,a,b,c,d)
1005c2c66affSColin Finck #define IProgressDialog_StopProgressDialog(p) (p)->lpVtbl->StopProgressDialog(p)
1006c2c66affSColin Finck #define IProgressDialog_SetTitle(p,a) (p)->lpVtbl->SetTitle(p,a)
1007c2c66affSColin Finck #define IProgressDialog_SetAnimation(p,a,b) (p)->lpVtbl->SetAnimation(p,a,b)
1008c2c66affSColin Finck #define IProgressDialog_HasUserCancelled(p) (p)->lpVtbl->HasUserCancelled(p)
1009c2c66affSColin Finck #define IProgressDialog_SetProgress(p,a,b) (p)->lpVtbl->SetProgress(p,a,b)
1010c2c66affSColin Finck #define IProgressDialog_SetProgress64(p,a,b) (p)->lpVtbl->SetProgress64(p,a,b)
1011c2c66affSColin Finck #define IProgressDialog_SetLine(p,a,b,c,d) (p)->lpVtbl->SetLine(p,a,b,c,d)
1012c2c66affSColin Finck #define IProgressDialog_SetCancelMsg(p,a,b) (p)->lpVtbl->SetCancelMsg(p,a,b)
1013c2c66affSColin Finck #define IProgressDialog_Timer(p,a,b) (p)->lpVtbl->Timer(p,a,b)
1014c2c66affSColin Finck #endif
1015c2c66affSColin Finck
1016c2c66affSColin Finck
1017c2c66affSColin Finck /* IDeskBarClient interface */
1018c2c66affSColin Finck #define INTERFACE IDeskBarClient
DECLARE_INTERFACE_(IDeskBarClient,IOleWindow)1019c2c66affSColin Finck DECLARE_INTERFACE_(IDeskBarClient,IOleWindow)
1020c2c66affSColin Finck {
1021c2c66affSColin Finck /*** IUnknown methods ***/
1022c2c66affSColin Finck STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1023c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1024c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE;
1025c2c66affSColin Finck /*** IOleWindow methods ***/
1026c2c66affSColin Finck STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE;
1027c2c66affSColin Finck STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE;
1028c2c66affSColin Finck /*** IDeskBarClient methods ***/
1029c2c66affSColin Finck STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ _In_opt_ IUnknown*) PURE;
1030c2c66affSColin Finck STDMETHOD_(HRESULT,SetModeDBC)(THIS_ DWORD) PURE;
1031c2c66affSColin Finck STDMETHOD_(HRESULT,UIActivateDBC)(THIS_ DWORD) PURE;
1032c2c66affSColin Finck STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD, _Out_ LPRECT) PURE;
1033c2c66affSColin Finck };
1034c2c66affSColin Finck #undef INTERFACE
1035c2c66affSColin Finck
1036c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
1037c2c66affSColin Finck /*** IUnknown methods ***/
1038c2c66affSColin Finck #define IDeskBarClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1039c2c66affSColin Finck #define IDeskBarClient_AddRef(p) (p)->lpVtbl->AddRef(p)
1040c2c66affSColin Finck #define IDeskBarClient_Release(p) (p)->lpVtbl->Release(p)
1041c2c66affSColin Finck /*** IOleWindow methods ***/
1042c2c66affSColin Finck #define IDeskBarClient_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
1043c2c66affSColin Finck #define IDeskBarClient_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
1044c2c66affSColin Finck /*** IOleWindow IDeskBarClient ***/
1045c2c66affSColin Finck #define IDeskBarClient_SetDeskBarSite(p,a) (p)->lpVtbl->SetDeskBarSite(p,a)
1046c2c66affSColin Finck #define IDeskBarClient_SetModeDBC(p,a) (p)->lpVtbl->SetModeDBC(p,a)
1047c2c66affSColin Finck #define IDeskBarClient_UIActivateDBC(p,a) (p)->lpVtbl->UIActivateDBC(p,a)
1048c2c66affSColin Finck #define IDeskBarClient_GetSize(p,a,b) (p)->lpVtbl->GetSize(p,a,b)
1049c2c66affSColin Finck #endif
1050c2c66affSColin Finck
1051c2c66affSColin Finck #define DBC_GS_IDEAL 0
1052c2c66affSColin Finck #define DBC_GS_SIZEDOWN 1
1053c2c66affSColin Finck
1054c2c66affSColin Finck #define DBC_HIDE 0
1055c2c66affSColin Finck #define DBC_SHOW 1
1056c2c66affSColin Finck #define DBC_SHOWOBSCURE 2
1057c2c66affSColin Finck
1058c2c66affSColin Finck
1059570b7655SMark Jansen /* As indicated by the documentation for IActiveDesktop,
1060570b7655SMark Jansen you must include wininet.h before shlobj.h */
1061570b7655SMark Jansen #ifdef _WINE_WININET_H_
1062570b7655SMark Jansen
1063570b7655SMark Jansen
1064570b7655SMark Jansen /* Structs are taken from msdn, and not verified!
1065570b7655SMark Jansen Only stuff needed to make it compile are here, no flags or anything */
1066570b7655SMark Jansen
1067570b7655SMark Jansen typedef struct _tagWALLPAPEROPT
1068570b7655SMark Jansen {
1069570b7655SMark Jansen DWORD dwSize;
1070570b7655SMark Jansen DWORD dwStyle;
1071570b7655SMark Jansen } WALLPAPEROPT;
1072570b7655SMark Jansen
1073570b7655SMark Jansen typedef WALLPAPEROPT *LPWALLPAPEROPT;
1074570b7655SMark Jansen typedef const WALLPAPEROPT *LPCWALLPAPEROPT;
1075570b7655SMark Jansen
1076570b7655SMark Jansen typedef struct _tagCOMPONENTSOPT
1077570b7655SMark Jansen {
1078570b7655SMark Jansen DWORD dwSize;
1079570b7655SMark Jansen BOOL fEnableComponents;
1080570b7655SMark Jansen BOOL fActiveDesktop;
1081570b7655SMark Jansen } COMPONENTSOPT;
1082570b7655SMark Jansen
1083570b7655SMark Jansen typedef COMPONENTSOPT *LPCOMPONENTSOPT;
1084570b7655SMark Jansen typedef const COMPONENTSOPT *LPCCOMPONENTSOPT;
1085570b7655SMark Jansen
1086570b7655SMark Jansen
1087570b7655SMark Jansen typedef struct _tagCOMPPOS
1088570b7655SMark Jansen {
1089570b7655SMark Jansen DWORD dwSize;
1090570b7655SMark Jansen int iLeft;
1091570b7655SMark Jansen int iTop;
1092570b7655SMark Jansen DWORD dwWidth;
1093570b7655SMark Jansen DWORD dwHeight;
1094570b7655SMark Jansen int izIndex;
1095570b7655SMark Jansen BOOL fCanResize;
1096570b7655SMark Jansen BOOL fCanResizeX;
1097570b7655SMark Jansen BOOL fCanResizeY;
1098570b7655SMark Jansen int iPreferredLeftPercent;
1099570b7655SMark Jansen int iPreferredTopPercent;
1100570b7655SMark Jansen } COMPPOS;
1101570b7655SMark Jansen
1102570b7655SMark Jansen typedef struct _tagCOMPSTATEINFO
1103570b7655SMark Jansen {
1104570b7655SMark Jansen DWORD dwSize;
1105570b7655SMark Jansen int iLeft;
1106570b7655SMark Jansen int iTop;
1107570b7655SMark Jansen DWORD dwWidth;
1108570b7655SMark Jansen DWORD dwHeight;
1109570b7655SMark Jansen DWORD dwItemState;
1110570b7655SMark Jansen } COMPSTATEINFO;
1111570b7655SMark Jansen
1112570b7655SMark Jansen typedef struct _tagCOMPONENT
1113570b7655SMark Jansen {
1114570b7655SMark Jansen DWORD dwSize;
1115570b7655SMark Jansen DWORD dwID;
1116570b7655SMark Jansen int iComponentType;
1117570b7655SMark Jansen BOOL fChecked;
1118570b7655SMark Jansen BOOL fDirty;
1119570b7655SMark Jansen BOOL fNoScroll;
1120570b7655SMark Jansen COMPPOS cpPos;
1121570b7655SMark Jansen WCHAR wszFriendlyName[MAX_PATH];
1122570b7655SMark Jansen WCHAR wszSource[INTERNET_MAX_URL_LENGTH];
1123570b7655SMark Jansen WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH];
1124570b7655SMark Jansen DWORD dwCurItemState;
1125570b7655SMark Jansen COMPSTATEINFO csiOriginal;
1126570b7655SMark Jansen COMPSTATEINFO csiRestored;
1127570b7655SMark Jansen } COMPONENT;
1128570b7655SMark Jansen
1129570b7655SMark Jansen typedef COMPONENT *LPCOMPONENT;
1130570b7655SMark Jansen typedef const COMPONENT *LPCCOMPONENT;
1131570b7655SMark Jansen
1132570b7655SMark Jansen #pragma push_macro("AddDesktopItem")
1133570b7655SMark Jansen #undef AddDesktopItem
1134570b7655SMark Jansen
1135570b7655SMark Jansen /* IDeskBarClient interface */
1136570b7655SMark Jansen #define INTERFACE IActiveDesktop
DECLARE_INTERFACE_(IActiveDesktop,IUnknown)1137570b7655SMark Jansen DECLARE_INTERFACE_(IActiveDesktop, IUnknown)
1138570b7655SMark Jansen {
1139570b7655SMark Jansen /*** IUnknown methods ***/
1140570b7655SMark Jansen STDMETHOD(QueryInterface) (THIS_ _In_ REFIID riid, _Outptr_ void **ppv) PURE;
1141570b7655SMark Jansen STDMETHOD_(ULONG,AddRef) (THIS) PURE;
1142570b7655SMark Jansen STDMETHOD_(ULONG,Release) (THIS) PURE;
1143570b7655SMark Jansen
1144570b7655SMark Jansen /*** IActiveDesktop methods ***/
1145570b7655SMark Jansen STDMETHOD(ApplyChanges)(THIS_ DWORD dwFlags) PURE;
1146570b7655SMark Jansen STDMETHOD(GetWallpaper)(THIS_ PWSTR pwszWallpaper, UINT cchWallpaper, DWORD dwFlags) PURE;
1147570b7655SMark Jansen STDMETHOD(SetWallpaper)(THIS_ PCWSTR pwszWallpaper, DWORD dwReserved) PURE;
1148570b7655SMark Jansen STDMETHOD(GetWallpaperOptions)(THIS_ LPWALLPAPEROPT pwpo, DWORD dwReserved) PURE;
1149570b7655SMark Jansen STDMETHOD(SetWallpaperOptions)(THIS_ LPCWALLPAPEROPT pwpo, DWORD dwReserved) PURE;
1150570b7655SMark Jansen STDMETHOD(GetPattern)(THIS_ PWSTR pwszPattern, UINT cchPattern, DWORD dwReserved) PURE;
1151570b7655SMark Jansen STDMETHOD(SetPattern)(THIS_ PCWSTR pwszPattern, DWORD dwReserved) PURE;
1152570b7655SMark Jansen STDMETHOD(GetDesktopItemOptions)(THIS_ LPCOMPONENTSOPT pco, DWORD dwReserved) PURE;
1153570b7655SMark Jansen STDMETHOD(SetDesktopItemOptions)(THIS_ LPCCOMPONENTSOPT pco, DWORD dwReserved) PURE;
1154570b7655SMark Jansen STDMETHOD(AddDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PURE;
1155570b7655SMark Jansen STDMETHOD(AddDesktopItemWithUI)(THIS_ HWND hwnd, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
1156570b7655SMark Jansen STDMETHOD(ModifyDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwFlags) PURE;
1157570b7655SMark Jansen STDMETHOD(RemoveDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PURE;
1158570b7655SMark Jansen STDMETHOD(GetDesktopItemCount)(THIS_ int *pcItems, DWORD dwReserved) PURE;
1159570b7655SMark Jansen STDMETHOD(GetDesktopItem)(THIS_ int nComponent, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
1160570b7655SMark Jansen STDMETHOD(GetDesktopItemByID)(THIS_ ULONG_PTR dwID, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
1161570b7655SMark Jansen STDMETHOD(GenerateDesktopItemHtml)(THIS_ PCWSTR pwszFileName, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
1162570b7655SMark Jansen STDMETHOD(AddUrl)(THIS_ HWND hwnd, PCWSTR pszSource, LPCOMPONENT pcomp, DWORD dwFlags) PURE;
1163570b7655SMark Jansen STDMETHOD(GetDesktopItemBySource)(THIS_ PCWSTR pwszSource, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
1164570b7655SMark Jansen };
1165570b7655SMark Jansen #undef INTERFACE
1166570b7655SMark Jansen
1167570b7655SMark Jansen #pragma pop_macro("AddDesktopItem")
1168570b7655SMark Jansen
1169570b7655SMark Jansen #endif
1170570b7655SMark Jansen
1171c2c66affSColin Finck /****************************************************************************
1172c2c66affSColin Finck * SHAddToRecentDocs API
1173c2c66affSColin Finck */
1174c2c66affSColin Finck #define SHARD_PIDL 0x00000001L
1175c2c66affSColin Finck #define SHARD_PATHA 0x00000002L
1176c2c66affSColin Finck #define SHARD_PATHW 0x00000003L
1177c2c66affSColin Finck #define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
1178c2c66affSColin Finck
1179c2c66affSColin Finck void WINAPI SHAddToRecentDocs(UINT, _In_opt_ LPCVOID);
1180c2c66affSColin Finck
1181c2c66affSColin Finck /****************************************************************************
1182c2c66affSColin Finck * SHBrowseForFolder API
1183c2c66affSColin Finck */
1184c2c66affSColin Finck typedef INT (CALLBACK *BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
1185c2c66affSColin Finck
1186c2c66affSColin Finck #include <pshpack8.h>
1187c2c66affSColin Finck
1188c2c66affSColin Finck typedef struct tagBROWSEINFOA {
1189c2c66affSColin Finck HWND hwndOwner;
1190ecb3ee54SSuraj K Suresh PCIDLIST_ABSOLUTE pidlRoot;
1191c2c66affSColin Finck LPSTR pszDisplayName;
1192c2c66affSColin Finck LPCSTR lpszTitle;
1193c2c66affSColin Finck UINT ulFlags;
1194c2c66affSColin Finck BFFCALLBACK lpfn;
1195c2c66affSColin Finck LPARAM lParam;
1196c2c66affSColin Finck INT iImage;
1197c2c66affSColin Finck } BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
1198c2c66affSColin Finck
1199c2c66affSColin Finck typedef struct tagBROWSEINFOW {
1200c2c66affSColin Finck HWND hwndOwner;
1201ecb3ee54SSuraj K Suresh PCIDLIST_ABSOLUTE pidlRoot;
1202c2c66affSColin Finck LPWSTR pszDisplayName;
1203c2c66affSColin Finck LPCWSTR lpszTitle;
1204c2c66affSColin Finck UINT ulFlags;
1205c2c66affSColin Finck BFFCALLBACK lpfn;
1206c2c66affSColin Finck LPARAM lParam;
1207c2c66affSColin Finck INT iImage;
1208c2c66affSColin Finck } BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
1209c2c66affSColin Finck
1210c2c66affSColin Finck #define BROWSEINFO WINELIB_NAME_AW(BROWSEINFO)
1211c2c66affSColin Finck #define PBROWSEINFO WINELIB_NAME_AW(PBROWSEINFO)
1212c2c66affSColin Finck #define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO)
1213c2c66affSColin Finck
1214c2c66affSColin Finck #include <poppack.h>
1215c2c66affSColin Finck
1216c2c66affSColin Finck /* Browsing for directory. */
1217c2c66affSColin Finck #define BIF_RETURNONLYFSDIRS 0x0001
1218c2c66affSColin Finck #define BIF_DONTGOBELOWDOMAIN 0x0002
1219c2c66affSColin Finck #define BIF_STATUSTEXT 0x0004
1220c2c66affSColin Finck #define BIF_RETURNFSANCESTORS 0x0008
1221c2c66affSColin Finck #define BIF_EDITBOX 0x0010
1222c2c66affSColin Finck #define BIF_VALIDATE 0x0020
1223c2c66affSColin Finck #define BIF_NEWDIALOGSTYLE 0x0040
1224c2c66affSColin Finck #define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)
1225c2c66affSColin Finck #define BIF_BROWSEINCLUDEURLS 0x0080
1226c2c66affSColin Finck #define BIF_UAHINT 0x0100
1227c2c66affSColin Finck #define BIF_NONEWFOLDERBUTTON 0x0200
1228c2c66affSColin Finck #define BIF_NOTRANSLATETARGETS 0x0400
1229c2c66affSColin Finck
1230c2c66affSColin Finck #define BIF_BROWSEFORCOMPUTER 0x1000
1231c2c66affSColin Finck #define BIF_BROWSEFORPRINTER 0x2000
1232c2c66affSColin Finck #define BIF_BROWSEINCLUDEFILES 0x4000
1233c2c66affSColin Finck #define BIF_SHAREABLE 0x8000
1234c2c66affSColin Finck
1235c2c66affSColin Finck /* message from browser */
1236c2c66affSColin Finck #define BFFM_INITIALIZED 1
1237c2c66affSColin Finck #define BFFM_SELCHANGED 2
1238c2c66affSColin Finck #define BFFM_VALIDATEFAILEDA 3
1239c2c66affSColin Finck #define BFFM_VALIDATEFAILEDW 4
1240c2c66affSColin Finck #define BFFM_IUNKNOWN 5
1241c2c66affSColin Finck
1242c2c66affSColin Finck /* messages to browser */
1243c2c66affSColin Finck #define BFFM_SETSTATUSTEXTA (WM_USER+100)
1244c2c66affSColin Finck #define BFFM_ENABLEOK (WM_USER+101)
1245c2c66affSColin Finck #define BFFM_SETSELECTIONA (WM_USER+102)
1246c2c66affSColin Finck #define BFFM_SETSELECTIONW (WM_USER+103)
1247c2c66affSColin Finck #define BFFM_SETSTATUSTEXTW (WM_USER+104)
1248c2c66affSColin Finck #define BFFM_SETOKTEXT (WM_USER+105)
1249c2c66affSColin Finck #define BFFM_SETEXPANDED (WM_USER+106)
1250c2c66affSColin Finck
1251ecb3ee54SSuraj K Suresh PIDLIST_ABSOLUTE WINAPI SHBrowseForFolderA(_In_ LPBROWSEINFOA lpbi);
1252ecb3ee54SSuraj K Suresh PIDLIST_ABSOLUTE WINAPI SHBrowseForFolderW(_In_ LPBROWSEINFOW lpbi);
1253c2c66affSColin Finck #define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder)
1254c2c66affSColin Finck
1255c2c66affSColin Finck #define BFFM_SETSTATUSTEXT WINELIB_NAME_AW(BFFM_SETSTATUSTEXT)
1256c2c66affSColin Finck #define BFFM_SETSELECTION WINELIB_NAME_AW(BFFM_SETSELECTION)
1257c2c66affSColin Finck #define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED)
1258c2c66affSColin Finck
1259c2c66affSColin Finck /**********************************************************************
1260c2c66affSColin Finck * SHCreateShellFolderViewEx API
1261c2c66affSColin Finck */
1262c2c66affSColin Finck
1263c2c66affSColin Finck typedef HRESULT
1264c2c66affSColin Finck (CALLBACK *LPFNVIEWCALLBACK)(
1265c2c66affSColin Finck _In_ IShellView* dwUser,
1266c2c66affSColin Finck _In_ IShellFolder* pshf,
1267c2c66affSColin Finck _In_ HWND hWnd,
1268c2c66affSColin Finck UINT uMsg,
1269c2c66affSColin Finck WPARAM wParam,
1270c2c66affSColin Finck LPARAM lParam);
1271c2c66affSColin Finck
1272c2c66affSColin Finck #include <pshpack8.h>
1273c2c66affSColin Finck
1274c2c66affSColin Finck typedef struct _CSFV
1275c2c66affSColin Finck {
1276c2c66affSColin Finck UINT cbSize;
1277c2c66affSColin Finck IShellFolder* pshf;
1278c2c66affSColin Finck IShellView* psvOuter;
1279ecb3ee54SSuraj K Suresh PCIDLIST_ABSOLUTE pidl;
1280c2c66affSColin Finck LONG lEvents;
1281c2c66affSColin Finck LPFNVIEWCALLBACK pfnCallback;
1282c2c66affSColin Finck FOLDERVIEWMODE fvm;
1283c2c66affSColin Finck } CSFV, *LPCSFV;
1284c2c66affSColin Finck
1285c2c66affSColin Finck #include <poppack.h>
1286c2c66affSColin Finck
1287c2c66affSColin Finck HRESULT
1288c2c66affSColin Finck WINAPI
1289c2c66affSColin Finck SHCreateShellFolderViewEx(
1290c2c66affSColin Finck _In_ LPCSFV pshfvi,
1291c2c66affSColin Finck _Outptr_ IShellView **ppshv);
1292c2c66affSColin Finck
1293c2c66affSColin Finck /* SHCreateShellFolderViewEx callback messages */
1294c2c66affSColin Finck #define SFVM_MERGEMENU 1
1295c2c66affSColin Finck #define SFVM_INVOKECOMMAND 2
1296c2c66affSColin Finck #define SFVM_GETHELPTEXT 3
1297c2c66affSColin Finck #define SFVM_GETTOOLTIPTEXT 4
1298c2c66affSColin Finck #define SFVM_GETBUTTONINFO 5
1299c2c66affSColin Finck #define SFVM_GETBUTTONS 6
1300c2c66affSColin Finck #define SFVM_INITMENUPOPUP 7
1301c2c66affSColin Finck #define SFVM_SELECTIONCHANGED 8 /* undocumented */
1302c2c66affSColin Finck #define SFVM_DRAWMENUITEM 9 /* undocumented */
1303c2c66affSColin Finck #define SFVM_MEASUREMENUITEM 10 /* undocumented */
1304c2c66affSColin Finck #define SFVM_EXITMENULOOP 11 /* undocumented */
1305c2c66affSColin Finck #define SFVM_VIEWRELEASE 12 /* undocumented */
1306c2c66affSColin Finck #define SFVM_GETNAMELENGTH 13 /* undocumented */
1307c2c66affSColin Finck #define SFVM_FSNOTIFY 14
1308c2c66affSColin Finck #define SFVM_WINDOWCREATED 15
1309c2c66affSColin Finck #define SFVM_WINDOWCLOSING 16 /* undocumented */
1310c2c66affSColin Finck #define SFVM_LISTREFRESHED 17 /* undocumented */
1311c2c66affSColin Finck #define SFVM_WINDOWFOCUSED 18 /* undocumented */
1312c2c66affSColin Finck #define SFVM_REGISTERCOPYHOOK 20 /* undocumented */
1313c2c66affSColin Finck #define SFVM_COPYHOOKCALLBACK 21 /* undocumented */
1314c2c66affSColin Finck #define SFVM_GETDETAILSOF 23
1315c2c66affSColin Finck #define SFVM_COLUMNCLICK 24
1316c2c66affSColin Finck #define SFVM_QUERYFSNOTIFY 25
1317c2c66affSColin Finck #define SFVM_DEFITEMCOUNT 26
1318c2c66affSColin Finck #define SFVM_DEFVIEWMODE 27
1319c2c66affSColin Finck #define SFVM_UNMERGEFROMMENU 28
1320c2c66affSColin Finck #define SFVM_ADDINGOBJECT 29 /* undocumented */
1321c2c66affSColin Finck #define SFVM_REMOVINGOBJECT 30 /* undocumented */
1322c2c66affSColin Finck #define SFVM_UPDATESTATUSBAR 31
1323c2c66affSColin Finck #define SFVM_BACKGROUNDENUM 32
1324c2c66affSColin Finck #define SFVM_GETCOMMANDDIR 33 /* undocumented */
1325c2c66affSColin Finck #define SFVM_GETCOLUMNSTREAM 34 /* undocumented */
1326c2c66affSColin Finck #define SFVM_CANSELECTALL 35 /* undocumented */
1327c2c66affSColin Finck #define SFVM_DIDDRAGDROP 36
1328c2c66affSColin Finck #define SFVM_ISSTRICTREFRESH 37 /* undocumented */
1329c2c66affSColin Finck #define SFVM_ISCHILDOBJECT 38 /* undocumented */
1330c2c66affSColin Finck #define SFVM_SETISFV 39
1331c2c66affSColin Finck #define SFVM_GETEXTVIEWS 40 /* undocumented */
1332c2c66affSColin Finck #define SFVM_THISIDLIST 41
13333285f698SKatayama Hirofumi MZ #define SFVM_UPDATINGOBJECT 43 /* undocumented */
1334*e639d7c1SWhindmar Saksit #define SFVM_HWNDMAIN 46 /* undocumented */
1335c2c66affSColin Finck #define SFVM_ADDPROPERTYPAGES 47
1336c2c66affSColin Finck #define SFVM_BACKGROUNDENUMDONE 48
1337c2c66affSColin Finck #define SFVM_GETNOTIFY 49
1338c2c66affSColin Finck #define SFVM_GETSORTDEFAULTS 53
1339c2c66affSColin Finck #define SFVM_SIZE 57
1340c2c66affSColin Finck #define SFVM_GETZONE 58
1341c2c66affSColin Finck #define SFVM_GETPANE 59
1342c2c66affSColin Finck #define SFVM_GETHELPTOPIC 63
1343c2c66affSColin Finck #define SFVM_GETANIMATION 68
1344c2c66affSColin Finck #define SFVM_GET_CUSTOMVIEWINFO 77 /* undocumented */
1345c2c66affSColin Finck #define SFVM_ENUMERATEDITEMS 79 /* undocumented */
1346c2c66affSColin Finck #define SFVM_GET_VIEW_DATA 80 /* undocumented */
1347c2c66affSColin Finck #define SFVM_GET_WEBVIEW_LAYOUT 82 /* undocumented */
1348c2c66affSColin Finck #define SFVM_GET_WEBVIEW_CONTENT 83 /* undocumented */
1349c2c66affSColin Finck #define SFVM_GET_WEBVIEW_TASKS 84 /* undocumented */
1350c2c66affSColin Finck #define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */
1351c2c66affSColin Finck #define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */
1352c2c66affSColin Finck
1353c2c66affSColin Finck #include <pshpack8.h>
1354c2c66affSColin Finck
1355c2c66affSColin Finck typedef struct _SFV_CREATE
1356c2c66affSColin Finck {
1357c2c66affSColin Finck UINT cbSize;
1358c2c66affSColin Finck IShellFolder *pshf;
1359c2c66affSColin Finck IShellView *psvOuter;
1360c2c66affSColin Finck IShellFolderViewCB *psfvcb;
1361c2c66affSColin Finck } SFV_CREATE;
1362c2c66affSColin Finck
1363c2c66affSColin Finck #include <poppack.h>
1364c2c66affSColin Finck
1365c2c66affSColin Finck HRESULT
1366c2c66affSColin Finck WINAPI
1367c2c66affSColin Finck SHCreateShellFolderView(
1368c2c66affSColin Finck _In_ const SFV_CREATE *pscfv,
1369c2c66affSColin Finck _Outptr_ IShellView **ppsv);
1370c2c66affSColin Finck
1371c2c66affSColin Finck /* Types and definitions for the SFM_* parameters */
1372c2c66affSColin Finck #include <pshpack8.h>
1373c2c66affSColin Finck
1374c2c66affSColin Finck #define QCMINFO_PLACE_BEFORE 0
1375c2c66affSColin Finck #define QCMINFO_PLACE_AFTER 1
1376c2c66affSColin Finck typedef struct _QCMINFO_IDMAP_PLACEMENT
1377c2c66affSColin Finck {
1378c2c66affSColin Finck UINT id;
1379c2c66affSColin Finck UINT fFlags;
1380c2c66affSColin Finck } QCMINFO_IDMAP_PLACEMENT;
1381c2c66affSColin Finck
1382c2c66affSColin Finck typedef struct _QCMINFO_IDMAP
1383c2c66affSColin Finck {
1384c2c66affSColin Finck UINT nMaxIds;
1385c2c66affSColin Finck QCMINFO_IDMAP_PLACEMENT pIdList[1];
1386c2c66affSColin Finck } QCMINFO_IDMAP;
1387c2c66affSColin Finck
1388c2c66affSColin Finck typedef struct _QCMINFO
1389c2c66affSColin Finck {
1390c2c66affSColin Finck HMENU hmenu;
1391c2c66affSColin Finck UINT indexMenu;
1392c2c66affSColin Finck UINT idCmdFirst;
1393c2c66affSColin Finck UINT idCmdLast;
1394c2c66affSColin Finck QCMINFO_IDMAP const* pIdMap;
1395c2c66affSColin Finck } QCMINFO, *LPQCMINFO;
1396c2c66affSColin Finck
1397c2c66affSColin Finck #define TBIF_DEFAULT 0x00000000
1398c2c66affSColin Finck #define TBIF_APPEND 0x00000000
1399c2c66affSColin Finck #define TBIF_PREPEND 0x00000001
1400c2c66affSColin Finck #define TBIF_REPLACE 0x00000002
1401c2c66affSColin Finck #define TBIF_INTERNETBAR 0x00010000
1402c2c66affSColin Finck #define TBIF_STANDARDTOOLBAR 0x00020000
1403c2c66affSColin Finck #define TBIF_NOTOOLBAR 0x00030000
1404c2c66affSColin Finck
1405c2c66affSColin Finck typedef struct _TBINFO
1406c2c66affSColin Finck {
1407c2c66affSColin Finck UINT cbuttons;
1408c2c66affSColin Finck UINT uFlags;
1409c2c66affSColin Finck } TBINFO, *LPTBINFO;
1410c2c66affSColin Finck
1411c2c66affSColin Finck #include <poppack.h>
1412c2c66affSColin Finck
1413c2c66affSColin Finck /****************************************************************************
1414c2c66affSColin Finck * SHShellFolderView_Message API
1415c2c66affSColin Finck */
1416c2c66affSColin Finck
1417c2c66affSColin Finck LRESULT
1418c2c66affSColin Finck WINAPI
1419c2c66affSColin Finck SHShellFolderView_Message(
1420c2c66affSColin Finck _In_ HWND hwndCabinet,
1421c2c66affSColin Finck UINT uMessage,
1422c2c66affSColin Finck LPARAM lParam);
1423c2c66affSColin Finck
1424c2c66affSColin Finck /* SHShellFolderView_Message messages */
1425c2c66affSColin Finck #define SFVM_REARRANGE 0x0001
1426c2c66affSColin Finck #define SFVM_GETARRANGECOLUMN 0x0002 /* undocumented */
1427c2c66affSColin Finck #define SFVM_ADDOBJECT 0x0003
1428c2c66affSColin Finck #define SFVM_GETITEMCOUNT 0x0004 /* undocumented */
1429c2c66affSColin Finck #define SFVM_GETITEMPIDL 0x0005 /* undocumented */
1430c2c66affSColin Finck #define SFVM_REMOVEOBJECT 0x0006
1431c2c66affSColin Finck #define SFVM_UPDATEOBJECT 0x0007
1432c2c66affSColin Finck #define SFVM_SETREDRAW 0x0008 /* undocumented */
1433c2c66affSColin Finck #define SFVM_GETSELECTEDOBJECTS 0x0009
1434c2c66affSColin Finck #define SFVM_ISDROPONSOURCE 0x000A /* undocumented */
1435c2c66affSColin Finck #define SFVM_MOVEICONS 0x000B /* undocumented */
1436c2c66affSColin Finck #define SFVM_GETDRAGPOINT 0x000C /* undocumented */
1437c2c66affSColin Finck #define SFVM_GETDROPPOINT 0x000D /* undocumented */
1438c2c66affSColin Finck #define SFVM_SETITEMPOS 0x000E
1439c2c66affSColin Finck #define SFVM_ISDROPONBACKGROUND 0x000F /* undocumented */
1440c2c66affSColin Finck #define SFVM_SETCLIPBOARD 0x0010
1441c2c66affSColin Finck #define SFVM_TOGGLEAUTOARRANGE 0x0011 /* undocumented */
1442c2c66affSColin Finck #define SFVM_LINEUPICONS 0x0012 /* undocumented */
1443c2c66affSColin Finck #define SFVM_GETAUTOARRANGE 0x0013 /* undocumented */
1444c2c66affSColin Finck #define SFVM_GETSELECTEDCOUNT 0x0014 /* undocumented */
1445c2c66affSColin Finck #define SFVM_GETITEMSPACING 0x0015 /* undocumented */
1446c2c66affSColin Finck #define SFVM_REFRESHOBJECT 0x0016 /* undocumented */
1447c2c66affSColin Finck #define SFVM_SETPOINTS 0x0017
1448c2c66affSColin Finck
1449c2c66affSColin Finck /****************************************************************************
1450c2c66affSColin Finck * SHGetDataFromIDList API
1451c2c66affSColin Finck */
1452c2c66affSColin Finck #define SHGDFIL_FINDDATA 1
1453c2c66affSColin Finck #define SHGDFIL_NETRESOURCE 2
1454c2c66affSColin Finck #define SHGDFIL_DESCRIPTIONID 3
1455c2c66affSColin Finck
1456c2c66affSColin Finck #define SHDID_ROOT_REGITEM 1
1457c2c66affSColin Finck #define SHDID_FS_FILE 2
1458c2c66affSColin Finck #define SHDID_FS_DIRECTORY 3
1459c2c66affSColin Finck #define SHDID_FS_OTHER 4
1460c2c66affSColin Finck #define SHDID_COMPUTER_DRIVE35 5
1461c2c66affSColin Finck #define SHDID_COMPUTER_DRIVE525 6
1462c2c66affSColin Finck #define SHDID_COMPUTER_REMOVABLE 7
1463c2c66affSColin Finck #define SHDID_COMPUTER_FIXED 8
1464c2c66affSColin Finck #define SHDID_COMPUTER_NETDRIVE 9
1465c2c66affSColin Finck #define SHDID_COMPUTER_CDROM 10
1466c2c66affSColin Finck #define SHDID_COMPUTER_RAMDISK 11
1467c2c66affSColin Finck #define SHDID_COMPUTER_OTHER 12
1468c2c66affSColin Finck #define SHDID_NET_DOMAIN 13
1469c2c66affSColin Finck #define SHDID_NET_SERVER 14
1470c2c66affSColin Finck #define SHDID_NET_SHARE 15
1471c2c66affSColin Finck #define SHDID_NET_RESTOFNET 16
1472c2c66affSColin Finck #define SHDID_NET_OTHER 17
1473c2c66affSColin Finck #define SHDID_COMPUTER_IMAGING 18
1474c2c66affSColin Finck #define SHDID_COMPUTER_AUDIO 19
1475c2c66affSColin Finck #define SHDID_COMPUTER_SHAREDDOCS 20
1476c2c66affSColin Finck
1477c2c66affSColin Finck #include <pshpack8.h>
1478c2c66affSColin Finck
1479c2c66affSColin Finck typedef struct _SHDESCRIPTIONID
1480c2c66affSColin Finck { DWORD dwDescriptionId;
1481c2c66affSColin Finck CLSID clsid;
1482c2c66affSColin Finck } SHDESCRIPTIONID, *LPSHDESCRIPTIONID;
1483c2c66affSColin Finck
1484c2c66affSColin Finck #include <poppack.h>
1485c2c66affSColin Finck
1486c2c66affSColin Finck HRESULT
1487c2c66affSColin Finck WINAPI
1488c2c66affSColin Finck SHGetDataFromIDListA(
1489c2c66affSColin Finck _In_ LPSHELLFOLDER psf,
1490ecb3ee54SSuraj K Suresh _In_ PCUITEMID_CHILD pidl,
1491c2c66affSColin Finck int nFormat,
1492c2c66affSColin Finck _Out_writes_bytes_(cb) LPVOID pv,
1493c2c66affSColin Finck int cb);
1494c2c66affSColin Finck
1495c2c66affSColin Finck HRESULT
1496c2c66affSColin Finck WINAPI
1497c2c66affSColin Finck SHGetDataFromIDListW(
1498c2c66affSColin Finck _In_ LPSHELLFOLDER psf,
1499ecb3ee54SSuraj K Suresh _In_ PCUITEMID_CHILD pidl,
1500c2c66affSColin Finck int nFormat,
1501c2c66affSColin Finck _Out_writes_bytes_(cb) LPVOID pv,
1502c2c66affSColin Finck int cb);
1503c2c66affSColin Finck
1504c2c66affSColin Finck #define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
1505c2c66affSColin Finck
1506ecb3ee54SSuraj K Suresh PIDLIST_ABSOLUTE
1507c2c66affSColin Finck WINAPI
1508c2c66affSColin Finck SHCloneSpecialIDList(
1509c2c66affSColin Finck _Reserved_ HWND hwnd,
1510c2c66affSColin Finck _In_ int csidl,
1511c2c66affSColin Finck _In_ BOOL fCreate);
1512c2c66affSColin Finck
1513c2c66affSColin Finck _Success_(return != 0)
1514c2c66affSColin Finck BOOL
1515c2c66affSColin Finck WINAPI
1516c2c66affSColin Finck SHGetSpecialFolderPathA(
1517c2c66affSColin Finck _Reserved_ HWND hwndOwner,
1518c2c66affSColin Finck _Out_writes_(MAX_PATH) LPSTR szPath,
1519c2c66affSColin Finck _In_ int nFolder,
1520c2c66affSColin Finck _In_ BOOL bCreate);
1521c2c66affSColin Finck
1522c2c66affSColin Finck _Success_(return != 0)
1523c2c66affSColin Finck BOOL
1524c2c66affSColin Finck WINAPI
1525c2c66affSColin Finck SHGetSpecialFolderPathW(
1526c2c66affSColin Finck _Reserved_ HWND hwndOwner,
1527c2c66affSColin Finck _Out_writes_(MAX_PATH) LPWSTR szPath,
1528c2c66affSColin Finck _In_ int nFolder,
1529c2c66affSColin Finck _In_ BOOL bCreate);
1530c2c66affSColin Finck
1531c2c66affSColin Finck #define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
1532c2c66affSColin Finck
1533c2c66affSColin Finck _Check_return_ HRESULT WINAPI SHGetMalloc(_Outptr_ LPMALLOC *lpmal);
1534c2c66affSColin Finck
1535c2c66affSColin Finck /**********************************************************************
1536c2c66affSColin Finck * SHGetSetSettings ()
1537c2c66affSColin Finck */
1538c2c66affSColin Finck
1539c2c66affSColin Finck typedef struct
1540c2c66affSColin Finck {
1541c2c66affSColin Finck BOOL fShowAllObjects : 1;
1542c2c66affSColin Finck BOOL fShowExtensions : 1;
1543c2c66affSColin Finck BOOL fNoConfirmRecycle : 1;
1544c2c66affSColin Finck
1545c2c66affSColin Finck BOOL fShowSysFiles : 1;
1546c2c66affSColin Finck BOOL fShowCompColor : 1;
1547c2c66affSColin Finck BOOL fDoubleClickInWebView : 1;
1548c2c66affSColin Finck BOOL fDesktopHTML : 1;
1549c2c66affSColin Finck BOOL fWin95Classic : 1;
1550c2c66affSColin Finck BOOL fDontPrettyPath : 1;
1551c2c66affSColin Finck BOOL fShowAttribCol : 1;
1552c2c66affSColin Finck BOOL fMapNetDrvBtn : 1;
1553c2c66affSColin Finck BOOL fShowInfoTip : 1;
1554c2c66affSColin Finck BOOL fHideIcons : 1;
1555c2c66affSColin Finck BOOL fWebView : 1;
1556c2c66affSColin Finck BOOL fFilter : 1;
1557c2c66affSColin Finck BOOL fShowSuperHidden : 1;
1558c2c66affSColin Finck BOOL fNoNetCrawling : 1;
1559c2c66affSColin Finck
1560c2c66affSColin Finck UINT :15; /* Required for proper binary layout with gcc */
1561c2c66affSColin Finck DWORD dwWin95Unused;
1562c2c66affSColin Finck UINT uWin95Unused;
1563c2c66affSColin Finck LONG lParamSort;
1564c2c66affSColin Finck int iSortDirection;
1565c2c66affSColin Finck UINT version;
1566c2c66affSColin Finck UINT uNotUsed;
1567c2c66affSColin Finck BOOL fSepProcess : 1;
1568c2c66affSColin Finck BOOL fStartPanelOn : 1;
1569c2c66affSColin Finck BOOL fShowStartPage : 1;
157071a3be24SWhindmar Saksit BOOL fAutoCheckSelect : 1; // Vista+
157171a3be24SWhindmar Saksit BOOL fIconsOnly : 1;
157271a3be24SWhindmar Saksit BOOL fShowTypeOverlay : 1;
157371a3be24SWhindmar Saksit BOOL fShowStatusBar : 1; // 8+
157471a3be24SWhindmar Saksit UINT fSpareFlags : 9;
1575c2c66affSColin Finck UINT :15; /* Required for proper binary layout with gcc */
1576c2c66affSColin Finck } SHELLSTATE, *LPSHELLSTATE;
1577c2c66affSColin Finck
1578698cbc61SKatayama Hirofumi MZ VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet);
1579698cbc61SKatayama Hirofumi MZ
1580c2c66affSColin Finck /**********************************************************************
1581c2c66affSColin Finck * SHGetSettings ()
1582c2c66affSColin Finck */
1583c2c66affSColin Finck typedef struct
1584c2c66affSColin Finck { BOOL fShowAllObjects : 1;
1585c2c66affSColin Finck BOOL fShowExtensions : 1;
1586c2c66affSColin Finck BOOL fNoConfirmRecycle : 1;
1587c2c66affSColin Finck BOOL fShowSysFiles : 1;
1588c2c66affSColin Finck BOOL fShowCompColor : 1;
1589c2c66affSColin Finck BOOL fDoubleClickInWebView : 1;
1590c2c66affSColin Finck BOOL fDesktopHTML : 1;
1591c2c66affSColin Finck BOOL fWin95Classic : 1;
1592c2c66affSColin Finck BOOL fDontPrettyPath : 1;
1593c2c66affSColin Finck BOOL fShowAttribCol : 1;
1594c2c66affSColin Finck BOOL fMapNetDrvBtn : 1;
1595c2c66affSColin Finck BOOL fShowInfoTip : 1;
1596c2c66affSColin Finck BOOL fHideIcons : 1;
159771a3be24SWhindmar Saksit BOOL fAutoCheckSelect : 1;
159871a3be24SWhindmar Saksit BOOL fIconsOnly : 1;
159971a3be24SWhindmar Saksit UINT fRestFlags : 1;
1600c2c66affSColin Finck UINT :15; /* Required for proper binary layout with gcc */
1601c2c66affSColin Finck } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
1602c2c66affSColin Finck
1603c2c66affSColin Finck VOID WINAPI SHGetSettings(_Out_ LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
1604c2c66affSColin Finck
160571a3be24SWhindmar Saksit #define SSF_SHOWALLOBJECTS 0x00000001
160671a3be24SWhindmar Saksit #define SSF_SHOWEXTENSIONS 0x00000002
160771a3be24SWhindmar Saksit #define SSF_SHOWCOMPCOLOR 0x00000008
160871a3be24SWhindmar Saksit #define SSF_SORTCOLUMNS 0x00000010
160971a3be24SWhindmar Saksit #define SSF_SHOWSYSFILES 0x00000020
161071a3be24SWhindmar Saksit #define SSF_DOUBLECLICKINWEBVIEW 0x00000080
161171a3be24SWhindmar Saksit #define SSF_SHOWATTRIBCOL 0x00000100
161271a3be24SWhindmar Saksit #define SSF_DESKTOPHTML 0x00000200
161371a3be24SWhindmar Saksit #define SSF_WIN95CLASSIC 0x00000400
161471a3be24SWhindmar Saksit #define SSF_DONTPRETTYPATH 0x00000800
161571a3be24SWhindmar Saksit #define SSF_MAPNETDRVBUTTON 0x00001000
161671a3be24SWhindmar Saksit #define SSF_SHOWINFOTIP 0x00002000
161771a3be24SWhindmar Saksit #define SSF_HIDEICONS 0x00004000
161871a3be24SWhindmar Saksit #define SSF_NOCONFIRMRECYCLE 0x00008000
161971a3be24SWhindmar Saksit #define SSF_FILTER 0x00010000
162071a3be24SWhindmar Saksit #define SSF_WEBVIEW 0x00020000
1621698cbc61SKatayama Hirofumi MZ #define SSF_SHOWSUPERHIDDEN 0x00040000
1622698cbc61SKatayama Hirofumi MZ #define SSF_SEPPROCESS 0x00080000
16233188f93fSStanislav Motylkov #if (NTDDI_VERSION >= NTDDI_WINXP)
16243188f93fSStanislav Motylkov #define SSF_NONETCRAWLING 0x00100000
16253188f93fSStanislav Motylkov #define SSF_STARTPANELON 0x00200000
16263188f93fSStanislav Motylkov #define SSF_SHOWSTARTPAGE 0x00400000
16273188f93fSStanislav Motylkov #endif
16283188f93fSStanislav Motylkov #if (NTDDI_VERSION >= NTDDI_VISTA)
16293188f93fSStanislav Motylkov #define SSF_AUTOCHECKSELECT 0x00800000
16303188f93fSStanislav Motylkov #define SSF_ICONSONLY 0x01000000
16313188f93fSStanislav Motylkov #define SSF_SHOWTYPEOVERLAY 0x02000000
16323188f93fSStanislav Motylkov #endif
16333188f93fSStanislav Motylkov #if (NTDDI_VERSION >= NTDDI_WIN8)
16343188f93fSStanislav Motylkov #define SSF_SHOWSTATUSBAR 0x04000000
16353188f93fSStanislav Motylkov #endif
1636c2c66affSColin Finck
1637c2c66affSColin Finck /****************************************************************************
1638c2c66affSColin Finck * SHRestricted API
1639c2c66affSColin Finck */
1640c2c66affSColin Finck typedef enum RESTRICTIONS
1641c2c66affSColin Finck {
1642c2c66affSColin Finck REST_NONE = 0x00000000,
1643c2c66affSColin Finck REST_NORUN = 0x00000001,
1644c2c66affSColin Finck REST_NOCLOSE = 0x00000002,
1645c2c66affSColin Finck REST_NOSAVESET = 0x00000004,
1646c2c66affSColin Finck REST_NOFILEMENU = 0x00000008,
1647c2c66affSColin Finck REST_NOSETFOLDERS = 0x00000010,
1648c2c66affSColin Finck REST_NOSETTASKBAR = 0x00000020,
1649c2c66affSColin Finck REST_NODESKTOP = 0x00000040,
1650c2c66affSColin Finck REST_NOFIND = 0x00000080,
1651c2c66affSColin Finck REST_NODRIVES = 0x00000100,
1652c2c66affSColin Finck REST_NODRIVEAUTORUN = 0x00000200,
1653c2c66affSColin Finck REST_NODRIVETYPEAUTORUN = 0x00000400,
1654c2c66affSColin Finck REST_NONETHOOD = 0x00000800,
1655c2c66affSColin Finck REST_STARTBANNER = 0x00001000,
1656c2c66affSColin Finck REST_RESTRICTRUN = 0x00002000,
1657c2c66affSColin Finck REST_NOPRINTERTABS = 0x00004000,
1658c2c66affSColin Finck REST_NOPRINTERDELETE = 0x00008000,
1659c2c66affSColin Finck REST_NOPRINTERADD = 0x00010000,
1660c2c66affSColin Finck REST_NOSTARTMENUSUBFOLDERS = 0x00020000,
1661c2c66affSColin Finck REST_MYDOCSONNET = 0x00040000,
1662c2c66affSColin Finck REST_NOEXITTODOS = 0x00080000,
1663c2c66affSColin Finck REST_ENFORCESHELLEXTSECURITY = 0x00100000,
1664c2c66affSColin Finck REST_LINKRESOLVEIGNORELINKINFO = 0x00200000,
1665c2c66affSColin Finck REST_NOCOMMONGROUPS = 0x00400000,
1666c2c66affSColin Finck REST_SEPARATEDESKTOPPROCESS = 0x00800000,
1667c2c66affSColin Finck REST_NOWEB = 0x01000000,
1668c2c66affSColin Finck REST_NOTRAYCONTEXTMENU = 0x02000000,
1669c2c66affSColin Finck REST_NOVIEWCONTEXTMENU = 0x04000000,
1670c2c66affSColin Finck REST_NONETCONNECTDISCONNECT = 0x08000000,
1671c2c66affSColin Finck REST_STARTMENULOGOFF = 0x10000000,
1672c2c66affSColin Finck REST_NOSETTINGSASSIST = 0x20000000,
1673c2c66affSColin Finck REST_NOINTERNETICON = 0x40000001,
1674c2c66affSColin Finck REST_NORECENTDOCSHISTORY,
1675c2c66affSColin Finck REST_NORECENTDOCSMENU,
1676c2c66affSColin Finck REST_NOACTIVEDESKTOP,
1677c2c66affSColin Finck REST_NOACTIVEDESKTOPCHANGES,
1678c2c66affSColin Finck REST_NOFAVORITESMENU,
1679c2c66affSColin Finck REST_CLEARRECENTDOCSONEXIT,
1680c2c66affSColin Finck REST_CLASSICSHELL,
1681c2c66affSColin Finck REST_NOCUSTOMIZEWEBVIEW,
1682c2c66affSColin Finck
1683c2c66affSColin Finck REST_NOHTMLWALLPAPER = 0x40000010,
1684c2c66affSColin Finck REST_NOCHANGINGWALLPAPER,
1685c2c66affSColin Finck REST_NODESKCOMP,
1686c2c66affSColin Finck REST_NOADDDESKCOMP,
1687c2c66affSColin Finck REST_NODELDESKCOMP,
1688c2c66affSColin Finck REST_NOCLOSEDESKCOMP,
1689c2c66affSColin Finck REST_NOCLOSE_DRAGDROPBAND,
1690c2c66affSColin Finck REST_NOMOVINGBAND,
1691c2c66affSColin Finck REST_NOEDITDESKCOMP,
1692c2c66affSColin Finck REST_NORESOLVESEARCH,
1693c2c66affSColin Finck REST_NORESOLVETRACK,
1694c2c66affSColin Finck REST_FORCECOPYACLWITHFILE,
16959513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
1696c2c66affSColin Finck REST_NOLOGO3CHANNELNOTIFY = 0x4000001C,
1697c2c66affSColin Finck #endif
1698c2c66affSColin Finck REST_NOFORGETSOFTWAREUPDATE = 0x4000001D,
1699c2c66affSColin Finck REST_NOSETACTIVEDESKTOP,
1700c2c66affSColin Finck REST_NOUPDATEWINDOWS,
1701c2c66affSColin Finck REST_NOCHANGESTARMENU, /* 0x40000020 */
1702c2c66affSColin Finck REST_NOFOLDEROPTIONS,
1703c2c66affSColin Finck REST_HASFINDCOMPUTERS,
1704c2c66affSColin Finck REST_INTELLIMENUS,
1705c2c66affSColin Finck REST_RUNDLGMEMCHECKBOX,
1706c2c66affSColin Finck REST_ARP_ShowPostSetup,
1707c2c66affSColin Finck REST_NOCSC,
1708c2c66affSColin Finck REST_NOCONTROLPANEL,
1709c2c66affSColin Finck REST_ENUMWORKGROUP,
1710c2c66affSColin Finck REST_ARP_NOARP,
1711c2c66affSColin Finck REST_ARP_NOREMOVEPAGE,
1712c2c66affSColin Finck REST_ARP_NOADDPAGE,
1713c2c66affSColin Finck REST_ARP_NOWINSETUPPAGE,
1714c2c66affSColin Finck REST_GREYMSIADS,
1715c2c66affSColin Finck REST_NOCHANGEMAPPEDDRIVELABEL,
1716c2c66affSColin Finck REST_NOCHANGEMAPPEDDRIVECOMMENT,
1717c2c66affSColin Finck REST_MaxRecentDocs, /* 0x40000030 */
1718c2c66affSColin Finck REST_NONETWORKCONNECTIONS,
1719c2c66affSColin Finck REST_FORCESTARTMENULOGOFF,
1720c2c66affSColin Finck REST_NOWEBVIEW,
1721c2c66affSColin Finck REST_NOCUSTOMIZETHISFOLDER,
1722c2c66affSColin Finck REST_NOENCRYPTION,
17239513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
17249513d18fSHermès Bélusca-Maïto REST_ALLOWFRENCHENCRYPTION = 0x40000036, /* not documented */
17259513d18fSHermès Bélusca-Maïto #endif
17269513d18fSHermès Bélusca-Maïto REST_DONTSHOWSUPERHIDDEN = 0x40000037,
1727c2c66affSColin Finck REST_NOSHELLSEARCHBUTTON,
1728c2c66affSColin Finck REST_NOHARDWARETAB,
1729c2c66affSColin Finck REST_NORUNASINSTALLPROMPT,
1730c2c66affSColin Finck REST_PROMPTRUNASINSTALLNETPATH,
1731c2c66affSColin Finck REST_NOMANAGEMYCOMPUTERVERB,
17329513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
17339513d18fSHermès Bélusca-Maïto REST_NORECENTDOCSNETHOOD = 0x4000003D, /* not documented */
17349513d18fSHermès Bélusca-Maïto #endif
17359513d18fSHermès Bélusca-Maïto REST_DISALLOWRUN = 0x4000003E,
1736c2c66affSColin Finck REST_NOWELCOMESCREEN,
1737c2c66affSColin Finck REST_RESTRICTCPL, /* 0x40000040 */
1738c2c66affSColin Finck REST_DISALLOWCPL,
1739c2c66affSColin Finck REST_NOSMBALLOONTIP,
1740c2c66affSColin Finck REST_NOSMHELP,
1741c2c66affSColin Finck REST_NOWINKEYS,
1742c2c66affSColin Finck REST_NOENCRYPTONMOVE,
1743c2c66affSColin Finck REST_NOLOCALMACHINERUN,
1744c2c66affSColin Finck REST_NOCURRENTUSERRUN,
1745c2c66affSColin Finck REST_NOLOCALMACHINERUNONCE,
1746c2c66affSColin Finck REST_NOCURRENTUSERRUNONCE,
1747c2c66affSColin Finck REST_FORCEACTIVEDESKTOPON,
17489513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
17499513d18fSHermès Bélusca-Maïto REST_NOCOMPUTERSNEARME = 0x4000004B, /* not documented */
17509513d18fSHermès Bélusca-Maïto #endif
17519513d18fSHermès Bélusca-Maïto REST_NOVIEWONDRIVE = 0x4000004C,
17529513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXP) || defined(IE_BACKCOMPAT_VERSION)
17539513d18fSHermès Bélusca-Maïto REST_NONETCRAWL = 0x4000004D,
17549513d18fSHermès Bélusca-Maïto REST_NOSHAREDDOCUMENTS = 0x4000004E,
17559513d18fSHermès Bélusca-Maïto #endif
17569513d18fSHermès Bélusca-Maïto REST_NOSMMYDOCS = 0x4000004F,
17579513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXP)
17589513d18fSHermès Bélusca-Maïto REST_NOSMMYPICS = 0x40000050,
1759c2c66affSColin Finck REST_ALLOWBITBUCKDRIVES,
1760c2c66affSColin Finck REST_NONLEGACYSHELLMODE,
1761c2c66affSColin Finck REST_NOCONTROLPANELBARRICADE,
1762c2c66affSColin Finck REST_NOSTARTPAGE,
1763c2c66affSColin Finck REST_NOAUTOTRAYNOTIFY,
1764c2c66affSColin Finck REST_NOTASKGROUPING,
1765c2c66affSColin Finck REST_NOCDBURNING,
17669513d18fSHermès Bélusca-Maïto #endif
17679513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
17689513d18fSHermès Bélusca-Maïto REST_MYCOMPNOPROP = 0x40000058,
1769c2c66affSColin Finck REST_MYDOCSNOPROP,
17709513d18fSHermès Bélusca-Maïto #endif
17719513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXP)
17729513d18fSHermès Bélusca-Maïto REST_NOSTARTPANEL = 0x4000005A,
1773c2c66affSColin Finck REST_NODISPLAYAPPEARANCEPAGE,
1774c2c66affSColin Finck REST_NOTHEMESTAB,
1775c2c66affSColin Finck REST_NOVISUALSTYLECHOICE,
1776c2c66affSColin Finck REST_NOSIZECHOICE,
1777c2c66affSColin Finck REST_NOCOLORCHOICE,
1778c2c66affSColin Finck REST_SETVISUALSTYLE, /* 0x40000060 */
17799513d18fSHermès Bélusca-Maïto #endif
17809513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
17819513d18fSHermès Bélusca-Maïto REST_STARTRUNNOHOMEPATH = 0x40000061,
17829513d18fSHermès Bélusca-Maïto #endif
17839513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXP)
17849513d18fSHermès Bélusca-Maïto REST_NOUSERNAMEINSTARTPANEL = 0x40000062,
1785c2c66affSColin Finck REST_NOMYCOMPUTERICON,
1786c2c66affSColin Finck REST_NOSMNETWORKPLACES,
1787c2c66affSColin Finck REST_NOSMPINNEDLIST,
1788c2c66affSColin Finck REST_NOSMMYMUSIC,
1789c2c66affSColin Finck REST_NOSMEJECTPC,
1790c2c66affSColin Finck REST_NOSMMOREPROGRAMS,
1791c2c66affSColin Finck REST_NOSMMFUPROGRAMS,
1792c2c66affSColin Finck REST_NOTRAYITEMSDISPLAY,
1793c2c66affSColin Finck REST_NOTOOLBARSONTASKBAR,
17949513d18fSHermès Bélusca-Maïto #endif
1795c2c66affSColin Finck /* 0x4000006C
1796c2c66affSColin Finck 0x4000006D
1797c2c66affSColin Finck 0x4000006E */
17989513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
1799c2c66affSColin Finck REST_NOSMCONFIGUREPROGRAMS = 0x4000006F,
18009513d18fSHermès Bélusca-Maïto #endif
18019513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXP)
18029513d18fSHermès Bélusca-Maïto REST_HIDECLOCK = 0x40000070,
1803c2c66affSColin Finck REST_NOLOWDISKSPACECHECKS,
18049513d18fSHermès Bélusca-Maïto #endif
18059513d18fSHermès Bélusca-Maïto REST_NOENTIRENETWORK = 0x40000072,
18069513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXP)
18079513d18fSHermès Bélusca-Maïto REST_NODESKTOPCLEANUP = 0x40000073,
1808c2c66affSColin Finck REST_BITBUCKNUKEONDELETE,
1809c2c66affSColin Finck REST_BITBUCKCONFIRMDELETE,
1810c2c66affSColin Finck REST_BITBUCKNOPROP,
1811c2c66affSColin Finck REST_NODISPBACKGROUND,
1812c2c66affSColin Finck REST_NODISPSCREENSAVEPG,
1813c2c66affSColin Finck REST_NODISPSETTINGSPG,
1814c2c66affSColin Finck REST_NODISPSCREENSAVEPREVIEW,
1815c2c66affSColin Finck REST_NODISPLAYCPL,
1816c2c66affSColin Finck REST_HIDERUNASVERB,
1817c2c66affSColin Finck REST_NOTHUMBNAILCACHE,
18189513d18fSHermès Bélusca-Maïto #endif
18199513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXPSP1) || defined(IE_BACKCOMPAT_VERSION)
18209513d18fSHermès Bélusca-Maïto REST_NOSTRCMPLOGICAL = 0x4000007E,
1821c2c66affSColin Finck REST_NOPUBLISHWIZARD,
1822c2c66affSColin Finck REST_NOONLINEPRINTSWIZARD, /* 0x40000080 */
1823c2c66affSColin Finck REST_NOWEBSERVICES,
18249513d18fSHermès Bélusca-Maïto #endif
18259513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
18269513d18fSHermès Bélusca-Maïto REST_ALLOWUNHASHEDWEBVIEW = 0x40000082,
18279513d18fSHermès Bélusca-Maïto #endif
18289513d18fSHermès Bélusca-Maïto REST_ALLOWLEGACYWEBVIEW = 0x40000083,
18299513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
18309513d18fSHermès Bélusca-Maïto REST_REVERTWEBVIEWSECURITY = 0x40000084,
18319513d18fSHermès Bélusca-Maïto #endif
18329513d18fSHermès Bélusca-Maïto /* 0x40000085 */
1833c2c66affSColin Finck REST_INHERITCONSOLEHANDLES = 0x40000086,
18349513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
18359513d18fSHermès Bélusca-Maïto REST_SORTMAXITEMCOUNT = 0x40000087,
18369513d18fSHermès Bélusca-Maïto #endif
18379513d18fSHermès Bélusca-Maïto /* 0x40000088 */
18389513d18fSHermès Bélusca-Maïto REST_NOREMOTERECURSIVEEVENTS = 0x40000089,
18399513d18fSHermès Bélusca-Maïto /* 0x4000008A - 0x40000090 */
18409513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
18419513d18fSHermès Bélusca-Maïto REST_NOREMOTECHANGENOTIFY = 0x40000091,
18429513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
18439513d18fSHermès Bélusca-Maïto REST_NOSIMPLENETIDLIST = 0x40000092,
18449513d18fSHermès Bélusca-Maïto #endif
18459513d18fSHermès Bélusca-Maïto REST_NOENUMENTIRENETWORK = 0x40000093,
18469513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
18479513d18fSHermès Bélusca-Maïto REST_NODETAILSTHUMBNAILONNETWORK = 0x40000094,
18489513d18fSHermès Bélusca-Maïto #endif
18499513d18fSHermès Bélusca-Maïto REST_NOINTERNETOPENWITH = 0x40000095,
18509513d18fSHermès Bélusca-Maïto #endif
18519513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
1852ede65b88SKatayama Hirofumi MZ #if (NTDDI_VERSION < NTDDI_VISTA)
1853ede65b88SKatayama Hirofumi MZ REST_ALLOWLEGACYLMZBEHAVIOR = 0x4000009A, /* not documented */
1854ede65b88SKatayama Hirofumi MZ #endif
18559513d18fSHermès Bélusca-Maïto REST_DONTRETRYBADNETNAME = 0x4000009B,
18569513d18fSHermès Bélusca-Maïto REST_ALLOWFILECLSIDJUNCTIONS,
18579513d18fSHermès Bélusca-Maïto REST_NOUPNPINSTALL,
18589513d18fSHermès Bélusca-Maïto #endif
18599513d18fSHermès Bélusca-Maïto /* 0x4000009E - "NormalizeLinkNetPidls" */
18609513d18fSHermès Bélusca-Maïto
18619513d18fSHermès Bélusca-Maïto REST_ARP_DONTGROUPPATCHES = 0x400000AC,
18629513d18fSHermès Bélusca-Maïto REST_ARP_NOCHOOSEPROGRAMSPAGE,
18639513d18fSHermès Bélusca-Maïto
18649513d18fSHermès Bélusca-Maïto /* 0x400000FF - "AllowCLSIDPROGIDMapping" */
1865c2c66affSColin Finck
1866c2c66affSColin Finck REST_NODISCONNECT = 0x41000001,
1867c2c66affSColin Finck REST_NOSECURITY,
1868c2c66affSColin Finck REST_NOFILEASSOCIATE, /* 0x41000003 */
18699513d18fSHermès Bélusca-Maïto
18709513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
18719513d18fSHermès Bélusca-Maïto REST_ALLOWCOMMENTTOGGLE = 0x41000004,
18729513d18fSHermès Bélusca-Maïto #if (NTDDI_VERSION < NTDDI_VISTA)
18739513d18fSHermès Bélusca-Maïto REST_USEDESKTOPINICACHE = 0x41000005,
18749513d18fSHermès Bélusca-Maïto /* 0x41000006 - "NoNetFolderInfoTip" */
18759513d18fSHermès Bélusca-Maïto #endif
18769513d18fSHermès Bélusca-Maïto #endif
1877c2c66affSColin Finck } RESTRICTIONS;
1878c2c66affSColin Finck
1879c2c66affSColin Finck DWORD WINAPI SHRestricted(RESTRICTIONS rest);
1880c2c66affSColin Finck
1881c2c66affSColin Finck /****************************************************************************
1882c2c66affSColin Finck * SHChangeNotify API
1883c2c66affSColin Finck */
1884c2c66affSColin Finck typedef struct _SHChangeNotifyEntry
1885c2c66affSColin Finck {
1886ecb3ee54SSuraj K Suresh PCIDLIST_ABSOLUTE pidl;
1887c2c66affSColin Finck BOOL fRecursive;
1888c2c66affSColin Finck } SHChangeNotifyEntry;
1889c2c66affSColin Finck
1890c2c66affSColin Finck #define SHCNE_RENAMEITEM 0x00000001
1891c2c66affSColin Finck #define SHCNE_CREATE 0x00000002
1892c2c66affSColin Finck #define SHCNE_DELETE 0x00000004
1893c2c66affSColin Finck #define SHCNE_MKDIR 0x00000008
1894c2c66affSColin Finck #define SHCNE_RMDIR 0x00000010
1895c2c66affSColin Finck #define SHCNE_MEDIAINSERTED 0x00000020
1896c2c66affSColin Finck #define SHCNE_MEDIAREMOVED 0x00000040
1897c2c66affSColin Finck #define SHCNE_DRIVEREMOVED 0x00000080
1898c2c66affSColin Finck #define SHCNE_DRIVEADD 0x00000100
1899c2c66affSColin Finck #define SHCNE_NETSHARE 0x00000200
1900c2c66affSColin Finck #define SHCNE_NETUNSHARE 0x00000400
1901c2c66affSColin Finck #define SHCNE_ATTRIBUTES 0x00000800
1902c2c66affSColin Finck #define SHCNE_UPDATEDIR 0x00001000
1903c2c66affSColin Finck #define SHCNE_UPDATEITEM 0x00002000
1904c2c66affSColin Finck #define SHCNE_SERVERDISCONNECT 0x00004000
1905c2c66affSColin Finck #define SHCNE_UPDATEIMAGE 0x00008000
1906c2c66affSColin Finck #define SHCNE_DRIVEADDGUI 0x00010000
1907c2c66affSColin Finck #define SHCNE_RENAMEFOLDER 0x00020000
1908c2c66affSColin Finck #define SHCNE_FREESPACE 0x00040000
1909c2c66affSColin Finck
1910c2c66affSColin Finck #define SHCNE_EXTENDED_EVENT 0x04000000
1911c2c66affSColin Finck #define SHCNE_ASSOCCHANGED 0x08000000
1912c2c66affSColin Finck #define SHCNE_DISKEVENTS 0x0002381F
1913c2c66affSColin Finck #define SHCNE_GLOBALEVENTS 0x0C0581E0
1914c2c66affSColin Finck #define SHCNE_ALLEVENTS 0x7FFFFFFF
1915c2c66affSColin Finck #define SHCNE_INTERRUPT 0x80000000
1916c2c66affSColin Finck
1917c2c66affSColin Finck #define SHCNEE_ORDERCHANGED 0x0002L
1918c2c66affSColin Finck #define SHCNEE_MSI_CHANGE 0x0004L
1919c2c66affSColin Finck #define SHCNEE_MSI_UNINSTALL 0x0005L
1920c2c66affSColin Finck
1921c2c66affSColin Finck #define SHCNF_IDLIST 0x0000
1922c2c66affSColin Finck #define SHCNF_PATHA 0x0001
1923c2c66affSColin Finck #define SHCNF_PRINTERA 0x0002
1924c2c66affSColin Finck #define SHCNF_DWORD 0x0003
1925c2c66affSColin Finck #define SHCNF_PATHW 0x0005
1926c2c66affSColin Finck #define SHCNF_PRINTERW 0x0006
1927c2c66affSColin Finck #define SHCNF_TYPE 0x00FF
1928c2c66affSColin Finck #define SHCNF_FLUSH 0x1000
1929c2c66affSColin Finck #define SHCNF_FLUSHNOWAIT 0x3000
1930c2c66affSColin Finck #define SHCNF_NOTIFYRECURSIVE 0x10000
1931c2c66affSColin Finck
1932c2c66affSColin Finck #define SHCNF_PATH WINELIB_NAME_AW(SHCNF_PATH)
1933c2c66affSColin Finck #define SHCNF_PRINTER WINELIB_NAME_AW(SHCNF_PRINTER)
1934c2c66affSColin Finck
1935c2c66affSColin Finck #define SHCNRF_InterruptLevel 0x0001
1936c2c66affSColin Finck #define SHCNRF_ShellLevel 0x0002
1937c2c66affSColin Finck #define SHCNRF_RecursiveInterrupt 0x1000
1938c2c66affSColin Finck #define SHCNRF_NewDelivery 0x8000
1939c2c66affSColin Finck
1940c2c66affSColin Finck void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
1941c2c66affSColin Finck
1942c2c66affSColin Finck typedef enum {
1943c2c66affSColin Finck SLDF_DEFAULT = 0x00000000,
1944c2c66affSColin Finck SLDF_HAS_ID_LIST = 0x00000001,
1945c2c66affSColin Finck SLDF_HAS_LINK_INFO = 0x00000002,
1946c2c66affSColin Finck SLDF_HAS_NAME = 0x00000004,
1947c2c66affSColin Finck SLDF_HAS_RELPATH = 0x00000008,
1948c2c66affSColin Finck SLDF_HAS_WORKINGDIR = 0x00000010,
1949c2c66affSColin Finck SLDF_HAS_ARGS = 0x00000020,
1950c2c66affSColin Finck SLDF_HAS_ICONLOCATION = 0x00000040,
1951c2c66affSColin Finck SLDF_UNICODE = 0x00000080,
1952c2c66affSColin Finck SLDF_FORCE_NO_LINKINFO = 0x00000100,
1953c2c66affSColin Finck SLDF_HAS_EXP_SZ = 0x00000200,
1954c2c66affSColin Finck SLDF_RUN_IN_SEPARATE = 0x00000400,
1955c2c66affSColin Finck #if (NTDDI_VERSION < NTDDI_LONGHORN)
1956c2c66affSColin Finck SLDF_HAS_LOGO3ID = 0x00000800,
1957c2c66affSColin Finck #endif
1958c2c66affSColin Finck SLDF_HAS_DARWINID = 0x00001000,
1959c2c66affSColin Finck SLDF_RUNAS_USER = 0x00002000,
1960c2c66affSColin Finck SLDF_HAS_EXP_ICON_SZ = 0x00004000,
1961c2c66affSColin Finck SLDF_NO_PIDL_ALIAS = 0x00008000,
1962c2c66affSColin Finck SLDF_FORCE_UNCNAME = 0x00010000,
1963c2c66affSColin Finck SLDF_RUN_WITH_SHIMLAYER = 0x00020000,
1964c2c66affSColin Finck #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1965c2c66affSColin Finck SLDF_FORCE_NO_LINKTRACK = 0x00040000,
1966c2c66affSColin Finck SLDF_ENABLE_TARGET_METADATA = 0x00080000,
1967c2c66affSColin Finck SLDF_DISABLE_LINK_PATH_TRACKING = 0x00100000,
1968c2c66affSColin Finck SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000,
1969c2c66affSColin Finck #if (NTDDI_VERSION >= NTDDI_WIN7)
1970c2c66affSColin Finck SLDF_NO_KF_ALIAS = 0x00400000,
1971c2c66affSColin Finck SLDF_ALLOW_LINK_TO_LINK = 0x00800000,
1972c2c66affSColin Finck SLDF_UNALIAS_ON_SAVE = 0x01000000,
1973c2c66affSColin Finck SLDF_PREFER_ENVIRONMENT_PATH = 0x02000000,
1974c2c66affSColin Finck SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET = 0x04000000,
1975c2c66affSColin Finck #if (NTDDI_VERSION >= NTDDI_WIN8)
1976c2c66affSColin Finck SLDF_PERSIST_VOLUME_ID_RELATIVE = 0x08000000,
1977c2c66affSColin Finck SLDF_VALID = 0x0ffff7ff, /* Windows 8 */
1978c2c66affSColin Finck #else
1979c2c66affSColin Finck SLDF_VALID = 0x07fff7ff, /* Windows 7 */
1980c2c66affSColin Finck #endif
1981c2c66affSColin Finck #else
1982c2c66affSColin Finck SLDF_VALID = 0x003ff7ff, /* Windows Vista */
1983c2c66affSColin Finck #endif
1984c2c66affSColin Finck #endif
1985c2c66affSColin Finck SLDF_RESERVED = 0x80000000,
1986c2c66affSColin Finck } SHELL_LINK_DATA_FLAGS;
1987c2c66affSColin Finck
1988c2c66affSColin Finck typedef struct tagDATABLOCKHEADER
1989c2c66affSColin Finck {
1990c2c66affSColin Finck DWORD cbSize;
1991c2c66affSColin Finck DWORD dwSignature;
1992c2c66affSColin Finck } DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST;
1993c2c66affSColin Finck
1994c2c66affSColin Finck #ifdef LF_FACESIZE
1995c2c66affSColin Finck typedef struct {
1996c2c66affSColin Finck DATABLOCK_HEADER dbh;
1997c2c66affSColin Finck WORD wFillAttribute;
1998c2c66affSColin Finck WORD wPopupFillAttribute;
1999c2c66affSColin Finck COORD dwScreenBufferSize;
2000c2c66affSColin Finck COORD dwWindowSize;
2001c2c66affSColin Finck COORD dwWindowOrigin;
2002c2c66affSColin Finck DWORD nFont;
2003c2c66affSColin Finck DWORD nInputBufferSize;
2004c2c66affSColin Finck COORD dwFontSize;
2005c2c66affSColin Finck UINT uFontFamily;
2006c2c66affSColin Finck UINT uFontWeight;
2007c2c66affSColin Finck WCHAR FaceName[LF_FACESIZE];
2008c2c66affSColin Finck UINT uCursorSize;
2009c2c66affSColin Finck BOOL bFullScreen;
2010c2c66affSColin Finck BOOL bQuickEdit;
2011c2c66affSColin Finck BOOL bInsertMode;
2012c2c66affSColin Finck BOOL bAutoPosition;
2013c2c66affSColin Finck UINT uHistoryBufferSize;
2014c2c66affSColin Finck UINT uNumberOfHistoryBuffers;
2015c2c66affSColin Finck BOOL bHistoryNoDup;
2016c2c66affSColin Finck COLORREF ColorTable[16];
2017c2c66affSColin Finck } NT_CONSOLE_PROPS, *LPNT_CONSOLE_PROPS;
2018c2c66affSColin Finck #endif
2019c2c66affSColin Finck
2020c2c66affSColin Finck typedef struct {
2021c2c66affSColin Finck DATABLOCK_HEADER dbh;
2022c2c66affSColin Finck UINT uCodePage;
2023c2c66affSColin Finck } NT_FE_CONSOLE_PROPS, *LPNT_FE_CONSOLE_PROPS;
2024c2c66affSColin Finck
2025c2c66affSColin Finck typedef struct {
2026c2c66affSColin Finck DWORD cbSize;
2027c2c66affSColin Finck DWORD dwSignature;
2028c2c66affSColin Finck CHAR szTarget[MAX_PATH];
2029c2c66affSColin Finck WCHAR szwTarget[MAX_PATH];
2030c2c66affSColin Finck } EXP_SZ_LINK, *LPEXP_SZ_LINK;
2031c2c66affSColin Finck
2032c2c66affSColin Finck typedef struct {
2033c2c66affSColin Finck DATABLOCK_HEADER dbh;
2034c2c66affSColin Finck CHAR szDarwinID[MAX_PATH];
2035c2c66affSColin Finck WCHAR szwDarwinID[MAX_PATH];
2036c2c66affSColin Finck } EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK;
2037c2c66affSColin Finck
2038c2c66affSColin Finck typedef struct {
2039c2c66affSColin Finck DWORD cbSize;
2040c2c66affSColin Finck DWORD dwSignature;
2041c2c66affSColin Finck DWORD idSpecialFolder;
2042c2c66affSColin Finck DWORD cbOffset;
2043c2c66affSColin Finck } EXP_SPECIAL_FOLDER, *LPEXP_SPECIAL_FOLDER;
2044c2c66affSColin Finck
2045c2c66affSColin Finck typedef struct {
2046c2c66affSColin Finck DWORD cbSize;
2047c2c66affSColin Finck DWORD dwSignature;
2048c2c66affSColin Finck BYTE abPropertyStorage[1];
2049c2c66affSColin Finck } EXP_PROPERTYSTORAGE;
2050c2c66affSColin Finck
2051c2c66affSColin Finck #define EXP_SZ_LINK_SIG 0xA0000001 /* EXP_SZ_LINK */
2052c2c66affSColin Finck #define NT_CONSOLE_PROPS_SIG 0xA0000002 /* NT_CONSOLE_PROPS */
2053c2c66affSColin Finck #define NT_FE_CONSOLE_PROPS_SIG 0xA0000004 /* NT_FE_CONSOLE_PROPS */
2054c2c66affSColin Finck #define EXP_SPECIAL_FOLDER_SIG 0xA0000005 /* EXP_SPECIAL_FOLDER */
2055c2c66affSColin Finck #define EXP_DARWIN_ID_SIG 0xA0000006 /* EXP_DARWIN_LINK */
2056c2c66affSColin Finck #if (NTDDI_VERSION < NTDDI_LONGHORN)
2057c2c66affSColin Finck #define EXP_LOGO3_ID_SIG 0xA0000007 /* EXP_DARWIN_LINK, for Logo3 / MS Internet Component Download (MSICD) shortcuts; old SDKs only (deprecated) */
2058c2c66affSColin Finck #endif
2059c2c66affSColin Finck #define EXP_SZ_ICON_SIG 0xA0000007 /* EXP_SZ_LINK */
2060c2c66affSColin Finck #define EXP_PROPERTYSTORAGE_SIG 0xA0000009 /* EXP_PROPERTYSTORAGE */
2061c2c66affSColin Finck
2062c2c66affSColin Finck typedef struct _SHChangeDWORDAsIDList {
2063c2c66affSColin Finck USHORT cb;
2064c2c66affSColin Finck DWORD dwItem1;
2065c2c66affSColin Finck DWORD dwItem2;
2066c2c66affSColin Finck USHORT cbZero;
2067c2c66affSColin Finck } SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList;
2068c2c66affSColin Finck
2069c2c66affSColin Finck typedef struct _SHChangeProductKeyAsIDList {
2070c2c66affSColin Finck USHORT cb;
2071c2c66affSColin Finck WCHAR wszProductKey[39];
2072c2c66affSColin Finck USHORT cbZero;
2073c2c66affSColin Finck } SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList;
2074c2c66affSColin Finck
2075c2c66affSColin Finck ULONG
2076c2c66affSColin Finck WINAPI
2077c2c66affSColin Finck SHChangeNotifyRegister(
2078c2c66affSColin Finck _In_ HWND hwnd,
2079c2c66affSColin Finck int fSources,
2080c2c66affSColin Finck LONG fEvents,
2081c2c66affSColin Finck UINT wMsg,
2082c2c66affSColin Finck int cEntries,
2083c2c66affSColin Finck _In_ SHChangeNotifyEntry *pshcne);
2084c2c66affSColin Finck
2085c2c66affSColin Finck BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID);
2086c2c66affSColin Finck
2087c2c66affSColin Finck HANDLE
2088c2c66affSColin Finck WINAPI
2089c2c66affSColin Finck SHChangeNotification_Lock(
2090c2c66affSColin Finck _In_ HANDLE hChangeNotification,
2091c2c66affSColin Finck DWORD dwProcessId,
2092ecb3ee54SSuraj K Suresh _Outptr_opt_result_buffer_(2)_Outptr_opt_result_buffer_(2) PIDLIST_ABSOLUTE **pppidl,
2093c2c66affSColin Finck _Out_opt_ LONG *plEvent);
2094c2c66affSColin Finck
2095c2c66affSColin Finck BOOL WINAPI SHChangeNotification_Unlock(_In_ HANDLE hLock);
2096c2c66affSColin Finck
2097c2c66affSColin Finck HRESULT
2098c2c66affSColin Finck WINAPI
2099c2c66affSColin Finck SHGetRealIDL(
2100c2c66affSColin Finck _In_ IShellFolder *psf,
2101ecb3ee54SSuraj K Suresh _In_ PCUITEMID_CHILD pidlSimple,
2102ecb3ee54SSuraj K Suresh _Outptr_ PITEMID_CHILD * ppidlReal);
2103c2c66affSColin Finck
2104c2c66affSColin Finck /****************************************************************************
2105c2c66affSColin Finck * SHCreateDirectory API
2106c2c66affSColin Finck */
2107c2c66affSColin Finck int WINAPI SHCreateDirectory(_In_opt_ HWND, _In_ LPCWSTR);
2108c2c66affSColin Finck
2109c2c66affSColin Finck int
2110c2c66affSColin Finck WINAPI
2111c2c66affSColin Finck SHCreateDirectoryExA(
2112c2c66affSColin Finck _In_opt_ HWND,
2113c2c66affSColin Finck _In_ LPCSTR,
2114c2c66affSColin Finck _In_opt_ LPSECURITY_ATTRIBUTES);
2115c2c66affSColin Finck
2116c2c66affSColin Finck int
2117c2c66affSColin Finck WINAPI
2118c2c66affSColin Finck SHCreateDirectoryExW(
2119c2c66affSColin Finck _In_opt_ HWND,
2120c2c66affSColin Finck _In_ LPCWSTR,
2121c2c66affSColin Finck _In_opt_ LPSECURITY_ATTRIBUTES);
2122c2c66affSColin Finck
2123c2c66affSColin Finck #define SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx)
2124c2c66affSColin Finck
2125c2c66affSColin Finck /****************************************************************************
2126c2c66affSColin Finck * SHGetSpecialFolderLocation API
2127c2c66affSColin Finck */
2128c2c66affSColin Finck _Check_return_
2129c2c66affSColin Finck HRESULT
2130c2c66affSColin Finck WINAPI
2131c2c66affSColin Finck SHGetSpecialFolderLocation(
2132c2c66affSColin Finck _Reserved_ HWND hwndOwner,
2133c2c66affSColin Finck _In_ int nFolder,
2134ecb3ee54SSuraj K Suresh _Outptr_ PIDLIST_ABSOLUTE *ppidl);
2135c2c66affSColin Finck
2136c2c66affSColin Finck HRESULT
2137c2c66affSColin Finck WINAPI
2138c2c66affSColin Finck SHGetFolderLocation(
2139c2c66affSColin Finck _Reserved_ HWND hwndOwner,
2140c2c66affSColin Finck _In_ int nFolder,
2141c2c66affSColin Finck _In_opt_ HANDLE hToken,
2142c2c66affSColin Finck _In_ DWORD dwReserved,
2143ecb3ee54SSuraj K Suresh _Outptr_ PIDLIST_ABSOLUTE *ppidl);
2144c2c66affSColin Finck
2145c2c66affSColin Finck /****************************************************************************
2146c2c66affSColin Finck * SHGetFolderPath API
2147c2c66affSColin Finck */
2148c2c66affSColin Finck typedef enum {
2149c2c66affSColin Finck SHGFP_TYPE_CURRENT = 0,
2150c2c66affSColin Finck SHGFP_TYPE_DEFAULT = 1
2151c2c66affSColin Finck } SHGFP_TYPE;
2152c2c66affSColin Finck
2153c2c66affSColin Finck HRESULT
2154c2c66affSColin Finck WINAPI
2155c2c66affSColin Finck SHGetFolderPathA(
2156c2c66affSColin Finck _Reserved_ HWND hwnd,
2157c2c66affSColin Finck _In_ int nFolder,
2158c2c66affSColin Finck _In_opt_ HANDLE hToken,
2159c2c66affSColin Finck _In_ DWORD dwFlags,
2160c2c66affSColin Finck _Out_writes_(MAX_PATH) LPSTR pszPath);
2161c2c66affSColin Finck
2162c2c66affSColin Finck HRESULT
2163c2c66affSColin Finck WINAPI
2164c2c66affSColin Finck SHGetFolderPathW(
2165c2c66affSColin Finck _Reserved_ HWND hwnd,
2166c2c66affSColin Finck _In_ int nFolder,
2167c2c66affSColin Finck _In_opt_ HANDLE hToken,
2168c2c66affSColin Finck _In_ DWORD dwFlags,
2169c2c66affSColin Finck _Out_writes_(MAX_PATH) LPWSTR pszPath);
2170c2c66affSColin Finck
2171c2c66affSColin Finck #define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath)
2172c2c66affSColin Finck
2173c2c66affSColin Finck #define CSIDL_DESKTOP 0x0000
2174c2c66affSColin Finck #define CSIDL_INTERNET 0x0001
2175c2c66affSColin Finck #define CSIDL_PROGRAMS 0x0002
2176c2c66affSColin Finck #define CSIDL_CONTROLS 0x0003
2177c2c66affSColin Finck #define CSIDL_PRINTERS 0x0004
2178c2c66affSColin Finck #define CSIDL_PERSONAL 0x0005
2179c2c66affSColin Finck #define CSIDL_FAVORITES 0x0006
2180c2c66affSColin Finck #define CSIDL_STARTUP 0x0007
2181c2c66affSColin Finck #define CSIDL_RECENT 0x0008
2182c2c66affSColin Finck #define CSIDL_SENDTO 0x0009
2183c2c66affSColin Finck #define CSIDL_BITBUCKET 0x000a
2184c2c66affSColin Finck #define CSIDL_STARTMENU 0x000b
2185c2c66affSColin Finck #define CSIDL_MYDOCUMENTS CSIDL_PERSONAL
2186c2c66affSColin Finck #define CSIDL_MYMUSIC 0x000d
2187c2c66affSColin Finck #define CSIDL_MYVIDEO 0x000e
2188c2c66affSColin Finck #define CSIDL_DESKTOPDIRECTORY 0x0010
2189c2c66affSColin Finck #define CSIDL_DRIVES 0x0011
2190c2c66affSColin Finck #define CSIDL_NETWORK 0x0012
2191c2c66affSColin Finck #define CSIDL_NETHOOD 0x0013
2192c2c66affSColin Finck #define CSIDL_FONTS 0x0014
2193c2c66affSColin Finck #define CSIDL_TEMPLATES 0x0015
2194c2c66affSColin Finck #define CSIDL_COMMON_STARTMENU 0x0016
2195c2c66affSColin Finck #define CSIDL_COMMON_PROGRAMS 0X0017
2196c2c66affSColin Finck #define CSIDL_COMMON_STARTUP 0x0018
2197c2c66affSColin Finck #define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
2198c2c66affSColin Finck #define CSIDL_APPDATA 0x001a
2199c2c66affSColin Finck #define CSIDL_PRINTHOOD 0x001b
2200c2c66affSColin Finck #define CSIDL_LOCAL_APPDATA 0x001c
2201c2c66affSColin Finck #define CSIDL_ALTSTARTUP 0x001d
2202c2c66affSColin Finck #define CSIDL_COMMON_ALTSTARTUP 0x001e
2203c2c66affSColin Finck #define CSIDL_COMMON_FAVORITES 0x001f
2204c2c66affSColin Finck #define CSIDL_INTERNET_CACHE 0x0020
2205c2c66affSColin Finck #define CSIDL_COOKIES 0x0021
2206c2c66affSColin Finck #define CSIDL_HISTORY 0x0022
2207c2c66affSColin Finck #define CSIDL_COMMON_APPDATA 0x0023
2208c2c66affSColin Finck #define CSIDL_WINDOWS 0x0024
2209c2c66affSColin Finck #define CSIDL_SYSTEM 0x0025
2210c2c66affSColin Finck #define CSIDL_PROGRAM_FILES 0x0026
2211c2c66affSColin Finck #define CSIDL_MYPICTURES 0x0027
2212c2c66affSColin Finck #define CSIDL_PROFILE 0x0028
2213c2c66affSColin Finck #define CSIDL_SYSTEMX86 0x0029
2214c2c66affSColin Finck #define CSIDL_PROGRAM_FILESX86 0x002a
2215c2c66affSColin Finck #define CSIDL_PROGRAM_FILES_COMMON 0x002b
2216c2c66affSColin Finck #define CSIDL_PROGRAM_FILES_COMMONX86 0x002c
2217c2c66affSColin Finck #define CSIDL_COMMON_TEMPLATES 0x002d
2218c2c66affSColin Finck #define CSIDL_COMMON_DOCUMENTS 0x002e
2219c2c66affSColin Finck #define CSIDL_COMMON_ADMINTOOLS 0x002f
2220c2c66affSColin Finck #define CSIDL_ADMINTOOLS 0x0030
2221c2c66affSColin Finck #define CSIDL_CONNECTIONS 0x0031
2222c2c66affSColin Finck #define CSIDL_COMMON_MUSIC 0x0035
2223c2c66affSColin Finck #define CSIDL_COMMON_PICTURES 0x0036
2224c2c66affSColin Finck #define CSIDL_COMMON_VIDEO 0x0037
2225c2c66affSColin Finck #define CSIDL_RESOURCES 0x0038
2226c2c66affSColin Finck #define CSIDL_RESOURCES_LOCALIZED 0x0039
2227c2c66affSColin Finck #define CSIDL_COMMON_OEM_LINKS 0x003a
2228c2c66affSColin Finck #define CSIDL_CDBURN_AREA 0x003b
2229c2c66affSColin Finck #define CSIDL_COMPUTERSNEARME 0x003d
2230c2c66affSColin Finck #define CSIDL_PROFILES 0x003e
2231c2c66affSColin Finck #define CSIDL_FOLDER_MASK 0x00ff
2232c2c66affSColin Finck #define CSIDL_FLAG_PER_USER_INIT 0x0800
2233c2c66affSColin Finck #define CSIDL_FLAG_NO_ALIAS 0x1000
2234c2c66affSColin Finck #define CSIDL_FLAG_DONT_VERIFY 0x4000
2235c2c66affSColin Finck #define CSIDL_FLAG_CREATE 0x8000
2236c2c66affSColin Finck
2237c2c66affSColin Finck #define CSIDL_FLAG_MASK 0xff00
2238c2c66affSColin Finck
2239c2c66affSColin Finck /****************************************************************************
2240c2c66affSColin Finck * SHGetDesktopFolder API
2241c2c66affSColin Finck */
2242c2c66affSColin Finck _Check_return_ HRESULT WINAPI SHGetDesktopFolder(_Outptr_ IShellFolder * *);
2243c2c66affSColin Finck
2244c2c66affSColin Finck /****************************************************************************
2245c2c66affSColin Finck * SHBindToParent API
2246c2c66affSColin Finck */
2247c2c66affSColin Finck HRESULT
2248c2c66affSColin Finck WINAPI
2249c2c66affSColin Finck SHBindToParent(
2250ecb3ee54SSuraj K Suresh _In_ PCIDLIST_ABSOLUTE pidl,
2251c2c66affSColin Finck _In_ REFIID riid,
2252c2c66affSColin Finck _Outptr_ LPVOID *ppv,
2253ecb3ee54SSuraj K Suresh _Outptr_opt_ PCUITEMID_CHILD *ppidlLast);
2254c2c66affSColin Finck
2255c2c66affSColin Finck /****************************************************************************
2256d7722f39SHermès Bélusca-Maïto * SHCreateFileExtractIcon API
2257d7722f39SHermès Bélusca-Maïto */
2258d7722f39SHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WINXP)
2259d7722f39SHermès Bélusca-Maïto
2260d7722f39SHermès Bélusca-Maïto // NOTE: Even if documented on MSDN, the SHCreateFileExtractIconA()
2261d7722f39SHermès Bélusca-Maïto // ANSI function never existed on Windows!
2262d7722f39SHermès Bélusca-Maïto
2263d7722f39SHermès Bélusca-Maïto HRESULT
2264d7722f39SHermès Bélusca-Maïto WINAPI
2265d7722f39SHermès Bélusca-Maïto SHCreateFileExtractIconW(
2266d7722f39SHermès Bélusca-Maïto _In_ LPCWSTR pszFile,
2267d7722f39SHermès Bélusca-Maïto _In_ DWORD dwFileAttributes,
2268d7722f39SHermès Bélusca-Maïto _In_ REFIID riid,
2269d7722f39SHermès Bélusca-Maïto _Outptr_ void **ppv);
2270d7722f39SHermès Bélusca-Maïto
2271d7722f39SHermès Bélusca-Maïto #ifdef UNICODE
2272d7722f39SHermès Bélusca-Maïto #define SHCreateFileExtractIcon SHCreateFileExtractIconW
2273d7722f39SHermès Bélusca-Maïto #endif
2274d7722f39SHermès Bélusca-Maïto
2275d7722f39SHermès Bélusca-Maïto #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
2276d7722f39SHermès Bélusca-Maïto
2277d7722f39SHermès Bélusca-Maïto /****************************************************************************
2278c2c66affSColin Finck * SHDefExtractIcon API
2279c2c66affSColin Finck */
2280c2c66affSColin Finck HRESULT
2281c2c66affSColin Finck WINAPI
2282c2c66affSColin Finck SHDefExtractIconA(
2283c2c66affSColin Finck _In_ LPCSTR pszIconFile,
2284c2c66affSColin Finck int iIndex,
2285c2c66affSColin Finck UINT uFlags,
2286c2c66affSColin Finck _Out_opt_ HICON* phiconLarge,
2287c2c66affSColin Finck _Out_opt_ HICON* phiconSmall,
2288c2c66affSColin Finck UINT nIconSize);
2289c2c66affSColin Finck
2290c2c66affSColin Finck HRESULT
2291c2c66affSColin Finck WINAPI
2292c2c66affSColin Finck SHDefExtractIconW(
2293c2c66affSColin Finck _In_ LPCWSTR pszIconFile,
2294c2c66affSColin Finck int iIndex,
2295c2c66affSColin Finck UINT uFlags,
2296c2c66affSColin Finck _Out_opt_ HICON* phiconLarge,
2297c2c66affSColin Finck _Out_opt_ HICON* phiconSmall,
2298c2c66affSColin Finck UINT nIconSize);
2299c2c66affSColin Finck
2300c2c66affSColin Finck #define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
2301c2c66affSColin Finck
2302c2c66affSColin Finck /*
2303c2c66affSColin Finck * DROPFILES for CF_HDROP and CF_PRINTERS
2304c2c66affSColin Finck */
2305c2c66affSColin Finck typedef struct _DROPFILES
2306c2c66affSColin Finck {
2307c2c66affSColin Finck DWORD pFiles;
2308c2c66affSColin Finck POINT pt;
2309c2c66affSColin Finck BOOL fNC;
2310c2c66affSColin Finck BOOL fWide;
2311c2c66affSColin Finck } DROPFILES, *LPDROPFILES;
2312c2c66affSColin Finck
23132fc87289SMark Jansen
23142fc87289SMark Jansen /*
23152fc87289SMark Jansen * FILEDESCRIPTOR[A|W].dwFlags
23162fc87289SMark Jansen */
23172fc87289SMark Jansen #define FD_CLSID 0x00000001
23182fc87289SMark Jansen #define FD_SIZEPOINT 0x00000002
23192fc87289SMark Jansen #define FD_ATTRIBUTES 0x00000004
23202fc87289SMark Jansen #define FD_CREATETIME 0x00000008
23212fc87289SMark Jansen #define FD_ACCESSTIME 0x00000010
23222fc87289SMark Jansen #define FD_WRITESTIME 0x00000020
23232fc87289SMark Jansen #define FD_FILESIZE 0x00000040
23242fc87289SMark Jansen #define FD_PROGRESSUI 0x00004000
23252fc87289SMark Jansen #define FD_LINKUI 0x00008000
23262fc87289SMark Jansen #if (NTDDI_VERSION >= NTDDI_VISTA)
23272fc87289SMark Jansen #define FD_UNICODE 0x80000000
23282fc87289SMark Jansen #endif
23292fc87289SMark Jansen
2330c2c66affSColin Finck /*
2331c2c66affSColin Finck * Properties of a file in the clipboard
2332c2c66affSColin Finck */
2333c2c66affSColin Finck typedef struct _FILEDESCRIPTORA {
2334c2c66affSColin Finck DWORD dwFlags;
2335c2c66affSColin Finck CLSID clsid;
2336c2c66affSColin Finck SIZEL sizel;
2337c2c66affSColin Finck POINTL pointl;
2338c2c66affSColin Finck DWORD dwFileAttributes;
2339c2c66affSColin Finck FILETIME ftCreationTime;
2340c2c66affSColin Finck FILETIME ftLastAccessTime;
2341c2c66affSColin Finck FILETIME ftLastWriteTime;
2342c2c66affSColin Finck DWORD nFileSizeHigh;
2343c2c66affSColin Finck DWORD nFileSizeLow;
2344c2c66affSColin Finck CHAR cFileName[MAX_PATH];
2345c2c66affSColin Finck } FILEDESCRIPTORA, *LPFILEDESCRIPTORA;
2346c2c66affSColin Finck
2347c2c66affSColin Finck typedef struct _FILEDESCRIPTORW {
2348c2c66affSColin Finck DWORD dwFlags;
2349c2c66affSColin Finck CLSID clsid;
2350c2c66affSColin Finck SIZEL sizel;
2351c2c66affSColin Finck POINTL pointl;
2352c2c66affSColin Finck DWORD dwFileAttributes;
2353c2c66affSColin Finck FILETIME ftCreationTime;
2354c2c66affSColin Finck FILETIME ftLastAccessTime;
2355c2c66affSColin Finck FILETIME ftLastWriteTime;
2356c2c66affSColin Finck DWORD nFileSizeHigh;
2357c2c66affSColin Finck DWORD nFileSizeLow;
2358c2c66affSColin Finck WCHAR cFileName[MAX_PATH];
2359c2c66affSColin Finck } FILEDESCRIPTORW, *LPFILEDESCRIPTORW;
2360c2c66affSColin Finck
2361c2c66affSColin Finck DECL_WINELIB_TYPE_AW(FILEDESCRIPTOR)
2362c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPFILEDESCRIPTOR)
2363c2c66affSColin Finck
2364c2c66affSColin Finck /*
2365c2c66affSColin Finck * CF_FILEGROUPDESCRIPTOR clipboard format
2366c2c66affSColin Finck */
2367c2c66affSColin Finck typedef struct _FILEGROUPDESCRIPTORA {
2368c2c66affSColin Finck UINT cItems;
2369c2c66affSColin Finck FILEDESCRIPTORA fgd[1];
2370c2c66affSColin Finck } FILEGROUPDESCRIPTORA, *LPFILEGROUPDESCRIPTORA;
2371c2c66affSColin Finck
2372c2c66affSColin Finck typedef struct _FILEGROUPDESCRIPTORW {
2373c2c66affSColin Finck UINT cItems;
2374c2c66affSColin Finck FILEDESCRIPTORW fgd[1];
2375c2c66affSColin Finck } FILEGROUPDESCRIPTORW, *LPFILEGROUPDESCRIPTORW;
2376c2c66affSColin Finck
2377c2c66affSColin Finck DECL_WINELIB_TYPE_AW(FILEGROUPDESCRIPTOR)
2378c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPFILEGROUPDESCRIPTOR)
2379c2c66affSColin Finck
2380c2c66affSColin Finck /****************************************************************************
2381c2c66affSColin Finck * Cabinet functions
2382c2c66affSColin Finck */
2383c2c66affSColin Finck
2384c2c66affSColin Finck typedef struct {
2385c2c66affSColin Finck WORD cLength;
2386c2c66affSColin Finck WORD nVersion;
2387c2c66affSColin Finck BOOL fFullPathTitle:1;
2388c2c66affSColin Finck BOOL fSaveLocalView:1;
2389c2c66affSColin Finck BOOL fNotShell:1;
2390c2c66affSColin Finck BOOL fSimpleDefault:1;
2391c2c66affSColin Finck BOOL fDontShowDescBar:1;
2392c2c66affSColin Finck BOOL fNewWindowMode:1;
2393c2c66affSColin Finck BOOL fShowCompColor:1;
2394c2c66affSColin Finck BOOL fDontPrettyNames:1;
2395c2c66affSColin Finck BOOL fAdminsCreateCommonGroups:1;
2396c2c66affSColin Finck UINT fUnusedFlags:7;
2397c2c66affSColin Finck UINT :15; /* Required for proper binary layout with gcc */
2398c2c66affSColin Finck UINT fMenuEnumFilter;
2399c2c66affSColin Finck } CABINETSTATE, *LPCABINETSTATE;
2400c2c66affSColin Finck
2401c2c66affSColin Finck #define CABINETSTATE_VERSION 2
2402c2c66affSColin Finck
2403c2c66affSColin Finck BOOL
2404c2c66affSColin Finck WINAPI
2405c2c66affSColin Finck ReadCabinetState(
2406c2c66affSColin Finck _Out_writes_bytes_(cLength) CABINETSTATE *,
2407c2c66affSColin Finck int cLength);
2408c2c66affSColin Finck
2409c2c66affSColin Finck BOOL WINAPI WriteCabinetState(_In_ CABINETSTATE *);
2410c2c66affSColin Finck
2411c2c66affSColin Finck /****************************************************************************
2412c2c66affSColin Finck * Path Manipulation Routines
2413c2c66affSColin Finck */
2414c2c66affSColin Finck
2415c2c66affSColin Finck /* PathProcessCommand flags */
2416c2c66affSColin Finck #define PPCF_ADDQUOTES 0x01
2417c2c66affSColin Finck #define PPCF_INCLUDEARGS 0x02
2418c2c66affSColin Finck #define PPCF_ADDARGUMENTS 0x03
2419c2c66affSColin Finck #define PPCF_NODIRECTORIES 0x10
2420c2c66affSColin Finck #define PPCF_DONTRESOLVE 0x20
2421c2c66affSColin Finck #define PPCF_FORCEQUALIFY 0x40
2422c2c66affSColin Finck #define PPCF_LONGESTPOSSIBLE 0x80
2423c2c66affSColin Finck
2424c2c66affSColin Finck /* PathResolve flags */
2425c2c66affSColin Finck #define PRF_VERIFYEXISTS 0x01
2426c2c66affSColin Finck #define PRF_EXECUTABLE 0x02
2427c2c66affSColin Finck #define PRF_TRYPROGRAMEXTENSIONS (PRF_EXECUTABLE | PRF_VERIFYEXISTS)
2428c2c66affSColin Finck #define PRF_FIRSTDIRDEF 0x04
2429c2c66affSColin Finck #define PRF_DONTFINDLNK 0x08 // Used when PRF_TRYPROGRAMEXTENSIONS is specified
2430c2c66affSColin Finck #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
2431c2c66affSColin Finck #define PRF_REQUIREABSOLUTE 0x10
2432c2c66affSColin Finck #endif
2433c2c66affSColin Finck
2434c2c66affSColin Finck VOID WINAPI PathGetShortPath(_Inout_updates_(MAX_PATH) LPWSTR pszPath);
2435c2c66affSColin Finck
2436c2c66affSColin Finck LONG
2437c2c66affSColin Finck WINAPI
2438c2c66affSColin Finck PathProcessCommand(
2439c2c66affSColin Finck _In_ LPCWSTR,
2440c2c66affSColin Finck _Out_writes_(cchDest) LPWSTR,
2441c2c66affSColin Finck int cchDest,
2442c2c66affSColin Finck DWORD);
2443c2c66affSColin Finck
2444c2c66affSColin Finck _Success_(return != 0)
2445c2c66affSColin Finck BOOL
2446c2c66affSColin Finck WINAPI
2447c2c66affSColin Finck PathYetAnotherMakeUniqueName(
2448c2c66affSColin Finck _Out_writes_(MAX_PATH) LPWSTR,
2449c2c66affSColin Finck _In_ LPCWSTR,
2450c2c66affSColin Finck _In_opt_ LPCWSTR,
2451c2c66affSColin Finck _In_opt_ LPCWSTR);
2452c2c66affSColin Finck
2453c2c66affSColin Finck /****************************************************************************
2454c2c66affSColin Finck * Drag And Drop Routines
2455c2c66affSColin Finck */
2456c2c66affSColin Finck
2457c2c66affSColin Finck /* DAD_AutoScroll sample structure */
2458c2c66affSColin Finck #define NUM_POINTS 3
2459c2c66affSColin Finck typedef struct
2460c2c66affSColin Finck {
2461c2c66affSColin Finck int iNextSample;
2462c2c66affSColin Finck DWORD dwLastScroll;
2463c2c66affSColin Finck BOOL bFull;
2464c2c66affSColin Finck POINT pts[NUM_POINTS];
2465c2c66affSColin Finck DWORD dwTimes[NUM_POINTS];
2466c2c66affSColin Finck } AUTO_SCROLL_DATA;
2467c2c66affSColin Finck
2468c2c66affSColin Finck BOOL WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT);
2469c2c66affSColin Finck BOOL WINAPI DAD_DragEnterEx(HWND,POINT);
2470c2c66affSColin Finck BOOL WINAPI DAD_DragEnterEx2(_In_ HWND, POINT, _In_opt_ IDataObject*);
2471c2c66affSColin Finck BOOL WINAPI DAD_DragMove(POINT);
2472c2c66affSColin Finck BOOL WINAPI DAD_DragLeave(void);
2473c2c66affSColin Finck BOOL WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,const POINT*);
2474c2c66affSColin Finck
2475c2c66affSColin Finck HRESULT
2476c2c66affSColin Finck WINAPI
2477c2c66affSColin Finck SHDoDragDrop(
2478c2c66affSColin Finck _In_opt_ HWND,
2479c2c66affSColin Finck _In_ IDataObject*,
2480c2c66affSColin Finck _In_opt_ IDropSource*,
2481c2c66affSColin Finck _In_ DWORD,
2482c2c66affSColin Finck _Out_ LPDWORD);
2483c2c66affSColin Finck
2484c2c66affSColin Finck /****************************************************************************
2485c2c66affSColin Finck * Internet shortcut properties
2486c2c66affSColin Finck */
2487c2c66affSColin Finck
2488c2c66affSColin Finck #define PID_IS_URL 2
2489c2c66affSColin Finck #define PID_IS_NAME 4
2490c2c66affSColin Finck #define PID_IS_WORKINGDIR 5
2491c2c66affSColin Finck #define PID_IS_HOTKEY 6
2492c2c66affSColin Finck #define PID_IS_SHOWCMD 7
2493c2c66affSColin Finck #define PID_IS_ICONINDEX 8
2494c2c66affSColin Finck #define PID_IS_ICONFILE 9
2495c2c66affSColin Finck #define PID_IS_WHATSNEW 10
2496c2c66affSColin Finck #define PID_IS_AUTHOR 11
2497c2c66affSColin Finck #define PID_IS_DESCRIPTION 12
2498c2c66affSColin Finck #define PID_IS_COMMENT 13
2499c2c66affSColin Finck
2500c2c66affSColin Finck
2501ecb3ee54SSuraj K Suresh PIDLIST_RELATIVE WINAPI ILAppendID(_In_opt_ PIDLIST_RELATIVE, _In_ LPCSHITEMID, BOOL);
2502ecb3ee54SSuraj K Suresh PIDLIST_RELATIVE WINAPI ILClone(_In_ PCUIDLIST_RELATIVE);
2503ecb3ee54SSuraj K Suresh PITEMID_CHILD WINAPI ILCloneFirst(_In_ PCUIDLIST_RELATIVE);
2504ecb3ee54SSuraj K Suresh PIDLIST_ABSOLUTE WINAPI ILCreateFromPathA(_In_ PCSTR);
2505ecb3ee54SSuraj K Suresh PIDLIST_ABSOLUTE WINAPI ILCreateFromPathW(_In_ PCWSTR);
2506c2c66affSColin Finck #define ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath)
2507ecb3ee54SSuraj K Suresh PIDLIST_ABSOLUTE WINAPI ILCombine(_In_opt_ PCIDLIST_ABSOLUTE, _In_opt_ PCUIDLIST_RELATIVE);
2508ecb3ee54SSuraj K Suresh PUIDLIST_RELATIVE WINAPI ILFindChild(_In_ PIDLIST_ABSOLUTE, _In_ PCIDLIST_ABSOLUTE);
2509ecb3ee54SSuraj K Suresh PUITEMID_CHILD WINAPI ILFindLastID(_In_ PCUIDLIST_RELATIVE);
2510ecb3ee54SSuraj K Suresh void WINAPI ILFree(_In_opt_ PIDLIST_RELATIVE);
2511ecb3ee54SSuraj K Suresh PUIDLIST_RELATIVE WINAPI ILGetNext(_In_opt_ PCUIDLIST_RELATIVE);
2512ecb3ee54SSuraj K Suresh UINT WINAPI ILGetSize(_In_opt_ PCUIDLIST_RELATIVE);
2513ecb3ee54SSuraj K Suresh BOOL WINAPI ILIsEqual(_In_ PCIDLIST_ABSOLUTE, _In_ PCIDLIST_ABSOLUTE);
2514ecb3ee54SSuraj K Suresh BOOL WINAPI ILIsParent(_In_ PCIDLIST_ABSOLUTE, _In_ PCIDLIST_ABSOLUTE, BOOL);
2515ecb3ee54SSuraj K Suresh HRESULT WINAPI ILLoadFromStream(_In_ LPSTREAM, _Inout_ PIDLIST_RELATIVE*);
2516ecb3ee54SSuraj K Suresh BOOL WINAPI ILRemoveLastID(_Inout_opt_ PUIDLIST_RELATIVE);
2517ecb3ee54SSuraj K Suresh HRESULT WINAPI ILSaveToStream(_In_ LPSTREAM, _In_ PCUIDLIST_RELATIVE);
2518c2c66affSColin Finck
ILIsEmpty(_In_opt_ PCUIDLIST_RELATIVE pidl)2519ecb3ee54SSuraj K Suresh static inline BOOL ILIsEmpty(_In_opt_ PCUIDLIST_RELATIVE pidl)
2520a6bf4abdSAmine Khaldi {
2521a6bf4abdSAmine Khaldi return !(pidl && pidl->mkid.cb);
2522a6bf4abdSAmine Khaldi }
2523c2c66affSColin Finck
2524c2c66affSColin Finck #include <poppack.h>
2525c2c66affSColin Finck
2526c2c66affSColin Finck
2527c2c66affSColin Finck /* menu merging */
2528c2c66affSColin Finck #define MM_ADDSEPARATOR 0x00000001L
2529c2c66affSColin Finck #define MM_SUBMENUSHAVEIDS 0x00000002L
2530c2c66affSColin Finck #define MM_DONTREMOVESEPS 0x00000004L
2531c2c66affSColin Finck
2532c2c66affSColin Finck UINT
2533c2c66affSColin Finck WINAPI
2534c2c66affSColin Finck Shell_MergeMenus(
2535c2c66affSColin Finck _In_ HMENU hmDst,
2536c2c66affSColin Finck _In_ HMENU hmSrc,
2537c2c66affSColin Finck UINT uInsert,
2538c2c66affSColin Finck UINT uIDAdjust,
2539c2c66affSColin Finck UINT uIDAdjustMax,
2540c2c66affSColin Finck ULONG uFlags);
2541c2c66affSColin Finck
2542c2c66affSColin Finck
2543c2c66affSColin Finck /****************************************************************************
2544c2c66affSColin Finck * SHCreateDefaultContextMenu API
2545c2c66affSColin Finck */
2546c2c66affSColin Finck
2547c2c66affSColin Finck typedef struct
2548c2c66affSColin Finck {
2549c2c66affSColin Finck HWND hwnd;
2550c2c66affSColin Finck IContextMenuCB *pcmcb;
2551c2c66affSColin Finck PCIDLIST_ABSOLUTE pidlFolder;
2552c2c66affSColin Finck IShellFolder *psf;
2553c2c66affSColin Finck UINT cidl;
2554c2c66affSColin Finck PCUITEMID_CHILD_ARRAY apidl;
2555c2c66affSColin Finck IUnknown *punkAssociationInfo;
2556c2c66affSColin Finck UINT cKeys;
2557c2c66affSColin Finck const HKEY *aKeys;
2558c2c66affSColin Finck }DEFCONTEXTMENU;
2559c2c66affSColin Finck
2560c2c66affSColin Finck HRESULT
2561c2c66affSColin Finck WINAPI
2562c2c66affSColin Finck SHCreateDefaultContextMenu(
2563c2c66affSColin Finck _In_ const DEFCONTEXTMENU *,
2564c2c66affSColin Finck _In_ REFIID,
2565c2c66affSColin Finck _Outptr_ void **ppv);
2566c2c66affSColin Finck
2567c2c66affSColin Finck typedef HRESULT
2568c2c66affSColin Finck (CALLBACK * LPFNDFMCALLBACK)(
2569c2c66affSColin Finck _In_opt_ IShellFolder*,
2570c2c66affSColin Finck _In_opt_ HWND,
2571c2c66affSColin Finck _In_opt_ IDataObject*,
2572c2c66affSColin Finck UINT,
2573c2c66affSColin Finck WPARAM,
2574c2c66affSColin Finck LPARAM);
2575c2c66affSColin Finck
2576c2c66affSColin Finck HRESULT
2577c2c66affSColin Finck WINAPI
2578c2c66affSColin Finck CDefFolderMenu_Create2(
2579c2c66affSColin Finck _In_opt_ PCIDLIST_ABSOLUTE,
2580c2c66affSColin Finck _In_opt_ HWND,
2581c2c66affSColin Finck UINT cidl,
2582c2c66affSColin Finck _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY,
2583c2c66affSColin Finck _In_opt_ IShellFolder*,
2584c2c66affSColin Finck _In_opt_ LPFNDFMCALLBACK,
2585c2c66affSColin Finck UINT nKeys,
2586c2c66affSColin Finck _In_reads_opt_(nKeys) const HKEY *,
2587c2c66affSColin Finck _Outptr_ IContextMenu **);
2588c2c66affSColin Finck
2589c2c66affSColin Finck #define DFM_MERGECONTEXTMENU 1
2590c2c66affSColin Finck #define DFM_INVOKECOMMAND 2
2591c2c66affSColin Finck #define DFM_INVOKECOMMANDEX 12
2592c2c66affSColin Finck #define DFM_GETDEFSTATICID 14
2593c2c66affSColin Finck
2594936b54faSMark Jansen #define DFM_GETHELPTEXT 5
2595936b54faSMark Jansen #define DFM_WM_MEASUREITEM 6
2596936b54faSMark Jansen #define DFM_WM_DRAWITEM 7
2597936b54faSMark Jansen #define DFM_WM_INITMENUPOPUP 8
2598936b54faSMark Jansen #define DFM_VALIDATECMD 9
2599936b54faSMark Jansen #define DFM_MERGECONTEXTMENU_TOP 10
2600936b54faSMark Jansen #define DFM_GETHELPTEXTW 11
2601936b54faSMark Jansen #define DFM_MAPCOMMANDNAME 13
2602936b54faSMark Jansen #define DFM_GETVERBW 15
2603936b54faSMark Jansen #define DFM_GETVERBA 16
2604936b54faSMark Jansen #define DFM_MERGECONTEXTMENU_BOTTOM 17
2605936b54faSMark Jansen #define DFM_MODIFYQCMFLAGS 18
2606936b54faSMark Jansen
2607936b54faSMark Jansen
2608c2c66affSColin Finck #define DFM_CMD_DELETE ((UINT)-1)
2609c2c66affSColin Finck #define DFM_CMD_MOVE ((UINT)-2)
2610c2c66affSColin Finck #define DFM_CMD_COPY ((UINT)-3)
2611c2c66affSColin Finck #define DFM_CMD_LINK ((UINT)-4)
2612c2c66affSColin Finck #define DFM_CMD_PROPERTIES ((UINT)-5)
2613c2c66affSColin Finck #define DFM_CMD_NEWFOLDER ((UINT)-6)
2614c2c66affSColin Finck #define DFM_CMD_PASTE ((UINT)-7)
2615c2c66affSColin Finck #define DFM_CMD_VIEWLIST ((UINT)-8)
2616c2c66affSColin Finck #define DFM_CMD_VIEWDETAILS ((UINT)-9)
2617c2c66affSColin Finck #define DFM_CMD_PASTELINK ((UINT)-10)
2618c2c66affSColin Finck #define DFM_CMD_PASTESPECIAL ((UINT)-11)
2619c2c66affSColin Finck #define DFM_CMD_MODALPROP ((UINT)-12)
2620c2c66affSColin Finck #define DFM_CMD_RENAME ((UINT)-13)
2621c2c66affSColin Finck
2622c2c66affSColin Finck /****************************************************************************
2623c2c66affSColin Finck * SHCreateDefaultExtractIcon API
2624c2c66affSColin Finck */
2625c2c66affSColin Finck
2626c2c66affSColin Finck HRESULT WINAPI
2627c2c66affSColin Finck SHCreateDefaultExtractIcon(
2628c2c66affSColin Finck REFIID riid,
2629c2c66affSColin Finck void **ppv);
2630c2c66affSColin Finck /****************************************************************************
2631c2c66affSColin Finck * SHCreateDataObject API
2632c2c66affSColin Finck */
2633c2c66affSColin Finck
2634c2c66affSColin Finck HRESULT WINAPI SHCreateDataObject(
2635c2c66affSColin Finck _In_opt_ PCIDLIST_ABSOLUTE pidlFolder,
2636c2c66affSColin Finck _In_ UINT cidl,
2637c2c66affSColin Finck _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY apidl,
2638c2c66affSColin Finck _In_opt_ IDataObject *pdtInner,
2639c2c66affSColin Finck _In_ REFIID riid,
2640c2c66affSColin Finck _Outptr_ void **ppv);
2641c2c66affSColin Finck
2642c2c66affSColin Finck /****************************************************************************
2643c2c66affSColin Finck * CIDLData_CreateFromIDArray API
2644c2c66affSColin Finck */
2645c2c66affSColin Finck
2646c2c66affSColin Finck HRESULT WINAPI CIDLData_CreateFromIDArray(
2647c2c66affSColin Finck _In_ PCIDLIST_ABSOLUTE pidlFolder,
2648c2c66affSColin Finck _In_ UINT cidl,
2649c2c66affSColin Finck _In_reads_opt_(cidl) PCUIDLIST_RELATIVE_ARRAY apidl,
2650c2c66affSColin Finck _Outptr_ IDataObject **ppdtobj);
2651c2c66affSColin Finck
2652c2c66affSColin Finck /****************************************************************************
2653da36f799SKyle Katarn * SHRunControlPanel
2654da36f799SKyle Katarn */
2655da36f799SKyle Katarn
2656da36f799SKyle Katarn BOOL
2657da36f799SKyle Katarn WINAPI
2658da36f799SKyle Katarn SHRunControlPanel(
2659da36f799SKyle Katarn _In_ LPCWSTR commandLine,
2660da36f799SKyle Katarn _In_opt_ HWND parent);
2661da36f799SKyle Katarn
2662da36f799SKyle Katarn /****************************************************************************
2663e5ea6041SMark Jansen * SHGetAttributesFromDataObject
2664e5ea6041SMark Jansen */
2665e5ea6041SMark Jansen
2666e5ea6041SMark Jansen HRESULT
2667e5ea6041SMark Jansen WINAPI
2668e5ea6041SMark Jansen SHGetAttributesFromDataObject(
2669e5ea6041SMark Jansen _In_opt_ IDataObject* pdo,
2670e5ea6041SMark Jansen DWORD dwAttributeMask,
2671e5ea6041SMark Jansen _Out_opt_ DWORD* pdwAttributes,
2672e5ea6041SMark Jansen _Out_opt_ UINT* pcItems);
2673e5ea6041SMark Jansen
2674e5ea6041SMark Jansen /****************************************************************************
2675c2c66affSColin Finck * SHOpenWithDialog
2676c2c66affSColin Finck */
2677c2c66affSColin Finck
2678c2c66affSColin Finck enum tagOPEN_AS_INFO_FLAGS
2679c2c66affSColin Finck {
2680c2c66affSColin Finck OAIF_ALLOW_REGISTRATION = 1,
2681c2c66affSColin Finck OAIF_REGISTER_EXT = 2,
2682c2c66affSColin Finck OAIF_EXEC = 4,
2683c2c66affSColin Finck OAIF_FORCE_REGISTRATION = 8,
2684c2c66affSColin Finck #if (NTDDI_VERSION >= NTDDI_VISTA)
2685c2c66affSColin Finck OAIF_HIDE_REGISTRATION = 32,
2686c2c66affSColin Finck OAIF_URL_PROTOCOL = 64,
2687c2c66affSColin Finck #endif
2688c2c66affSColin Finck };
2689c2c66affSColin Finck typedef int OPEN_AS_INFO_FLAGS;
2690c2c66affSColin Finck
2691c2c66affSColin Finck
2692c2c66affSColin Finck typedef struct tagOPENASINFO {
2693c2c66affSColin Finck LPCWSTR pcszFile;
2694c2c66affSColin Finck LPCWSTR pcszClass;
2695c2c66affSColin Finck OPEN_AS_INFO_FLAGS oaifInFlags;
2696c2c66affSColin Finck } OPENASINFO;
2697c2c66affSColin Finck
2698c2c66affSColin Finck HRESULT
2699c2c66affSColin Finck WINAPI
2700c2c66affSColin Finck SHOpenWithDialog(
2701c2c66affSColin Finck _In_opt_ HWND hwndParent,
2702c2c66affSColin Finck _In_ const OPENASINFO *poainfo);
2703c2c66affSColin Finck
2704c2c66affSColin Finck #define INTERFACE IShellIconOverlayIdentifier
2705c2c66affSColin Finck
DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)2706c2c66affSColin Finck DECLARE_INTERFACE_(IShellIconOverlayIdentifier, IUnknown)
2707c2c66affSColin Finck {
2708c2c66affSColin Finck STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
2709c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE;
2710c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE;
2711c2c66affSColin Finck
2712c2c66affSColin Finck STDMETHOD (IsMemberOf)(THIS_ _In_ LPCWSTR pwszPath, DWORD dwAttrib) PURE;
2713c2c66affSColin Finck STDMETHOD (GetOverlayInfo)(THIS_ _Out_writes_(cchMax) LPWSTR pwszIconFile, int cchMax, _Out_ int * pIndex, _Out_ DWORD * pdwFlags) PURE;
2714c2c66affSColin Finck STDMETHOD (GetPriority)(THIS_ _Out_ int * pIPriority) PURE;
2715c2c66affSColin Finck };
2716c2c66affSColin Finck
2717c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
2718c2c66affSColin Finck /*** IUnknown methods ***/
2719c2c66affSColin Finck #define IShellIconOverlayIdentifier_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2720c2c66affSColin Finck #define IShellIconOverlayIdentifier_AddRef(p) (p)->lpVtbl->AddRef(p)
2721c2c66affSColin Finck #define IShellIconOverlayIdentifier_Release(p) (p)->lpVtbl->Release(p)
2722c2c66affSColin Finck /*** IShellIconOverlayIdentifier methods ***/
2723c2c66affSColin Finck #define IShellIconOverlayIdentifier_IsMemberOf(p,a,b) (p)->lpVtbl->IsMemberOf(p,a,b)
2724c2c66affSColin Finck #define IShellIconOverlayIdentifier_GetOverlayInfo(p,a,b,c,d) (p)->lpVtbl->GetOverlayInfo(p,a,b,c,d)
2725c2c66affSColin Finck #define IShellIconOverlayIdentifier_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a)
2726c2c66affSColin Finck #endif
2727c2c66affSColin Finck
2728c2c66affSColin Finck #define ISIOI_ICONFILE 0x00000001
2729c2c66affSColin Finck #define ISIOI_ICONINDEX 0x00000002
2730c2c66affSColin Finck
2731c2c66affSColin Finck #undef INTERFACE
2732c2c66affSColin Finck
2733c2c66affSColin Finck /****************************************************************************
2734c2c66affSColin Finck * Travel log
2735c2c66affSColin Finck */
2736c2c66affSColin Finck
2737c2c66affSColin Finck #define TLOG_BACK -1
2738c2c66affSColin Finck #define TLOG_FORE 1
2739c2c66affSColin Finck
2740c2c66affSColin Finck #define TLMENUF_INCLUDECURRENT 0x00000001
2741c2c66affSColin Finck #define TLMENUF_CHECKCURRENT (TLMENUF_INCLUDECURRENT | 0x00000002)
2742c2c66affSColin Finck #define TLMENUF_BACK 0x00000010 // Default
2743c2c66affSColin Finck #define TLMENUF_FORE 0x00000020
2744c2c66affSColin Finck #define TLMENUF_BACKANDFORTH (TLMENUF_BACK | TLMENUF_FORE | TLMENUF_INCLUDECURRENT)
2745c2c66affSColin Finck
2746c2c66affSColin Finck /*****************************************************************************
2747c2c66affSColin Finck * IDockingWindowSite interface
2748c2c66affSColin Finck */
2749c2c66affSColin Finck #define INTERFACE IDockingWindowSite
DECLARE_INTERFACE_(IDockingWindowSite,IOleWindow)2750c2c66affSColin Finck DECLARE_INTERFACE_(IDockingWindowSite, IOleWindow)
2751c2c66affSColin Finck {
2752c2c66affSColin Finck // *** IUnknown methods ***
2753c2c66affSColin Finck STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
2754c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE;
2755c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE;
2756c2c66affSColin Finck
2757c2c66affSColin Finck // *** IOleWindow methods ***
2758c2c66affSColin Finck STDMETHOD(GetWindow)(THIS_ HWND *lphwnd) PURE;
2759c2c66affSColin Finck STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE;
2760c2c66affSColin Finck
2761c2c66affSColin Finck // *** IDockingWindowSite methods ***
2762c2c66affSColin Finck STDMETHOD(GetBorderDW)(THIS_ _In_ IUnknown *punkObj, _Out_ LPRECT prcBorder) PURE;
2763c2c66affSColin Finck STDMETHOD(RequestBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE;
2764c2c66affSColin Finck STDMETHOD(SetBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE;
2765c2c66affSColin Finck };
2766c2c66affSColin Finck #undef INTERFACE
2767c2c66affSColin Finck
2768c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE)
2769c2c66affSColin Finck /*** IUnknown methods ***/
2770c2c66affSColin Finck #define IDockingWindowSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2771c2c66affSColin Finck #define IDockingWindowSite_AddRef(p) (p)->lpVtbl->AddRef(p)
2772c2c66affSColin Finck #define IDockingWindowSite_Release(p) (p)->lpVtbl->Release(p)
2773c2c66affSColin Finck /*** IOleWindow methods ***/
2774c2c66affSColin Finck #define IDockingWindowSite_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
2775c2c66affSColin Finck #define IDockingWindowSite_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
2776c2c66affSColin Finck /*** IDockingWindowSite methods ***/
2777c2c66affSColin Finck #define IDockingWindowSite_GetBorderDW(p,a,b) (p)->lpVtbl->GetBorderDW(p,a,b)
2778c2c66affSColin Finck #define IDockingWindowSite_RequestBorderSpaceDW(p,a,b) (p)->lpVtbl->RequestBorderSpaceDW(p,a,b)
2779c2c66affSColin Finck #define IDockingWindowSite_SetBorderSpaceDW(p,a,b) (p)->lpVtbl->SetBorderSpaceDW(p,a,b)
2780c2c66affSColin Finck #endif
2781c2c66affSColin Finck
2782c2c66affSColin Finck typedef void (CALLBACK *PFNASYNCICONTASKBALLBACK)(LPCITEMIDLIST pidl, LPVOID pvData, LPVOID pvHint, INT iIconIndex, INT iOpenIconIndex);
2783c2c66affSColin Finck
2784ee1cbf51SGiannis Adamopoulos #define ISFB_MASK_STATE 0x00000001
2785ee1cbf51SGiannis Adamopoulos #define ISFB_MASK_IDLIST 0x00000010
2786ee1cbf51SGiannis Adamopoulos
2787ee1cbf51SGiannis Adamopoulos #define ISFB_STATE_QLINKSMODE 0x00000020
2788ee1cbf51SGiannis Adamopoulos #define ISFB_STATE_NOSHOWTEXT 0x00000004
2789ee1cbf51SGiannis Adamopoulos
2790d114f48fSGiannis Adamopoulos #include <pshpack8.h>
2791d114f48fSGiannis Adamopoulos
2792d114f48fSGiannis Adamopoulos typedef struct {
2793d114f48fSGiannis Adamopoulos DWORD dwMask;
2794d114f48fSGiannis Adamopoulos DWORD dwStateMask;
2795d114f48fSGiannis Adamopoulos DWORD dwState;
2796d114f48fSGiannis Adamopoulos COLORREF crBkgnd;
2797d114f48fSGiannis Adamopoulos COLORREF crBtnLt;
2798d114f48fSGiannis Adamopoulos COLORREF crBtnDk;
2799d114f48fSGiannis Adamopoulos WORD wViewMode;
2800d114f48fSGiannis Adamopoulos WORD wAlign;
2801d114f48fSGiannis Adamopoulos IShellFolder * psf;
2802d114f48fSGiannis Adamopoulos PIDLIST_ABSOLUTE pidl;
2803d114f48fSGiannis Adamopoulos } BANDINFOSFB, *PBANDINFOSFB;
2804d114f48fSGiannis Adamopoulos
2805d114f48fSGiannis Adamopoulos #include <poppack.h>
2806d114f48fSGiannis Adamopoulos
2807d114f48fSGiannis Adamopoulos #undef INTERFACE
2808d114f48fSGiannis Adamopoulos #define INTERFACE IShellFolderBand
2809d114f48fSGiannis Adamopoulos
DECLARE_INTERFACE_(IShellFolderBand,IUnknown)2810d114f48fSGiannis Adamopoulos DECLARE_INTERFACE_(IShellFolderBand, IUnknown)
2811d114f48fSGiannis Adamopoulos {
2812d114f48fSGiannis Adamopoulos // *** IUnknown methods ***
2813d114f48fSGiannis Adamopoulos STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
2814d114f48fSGiannis Adamopoulos STDMETHOD_(ULONG,AddRef) (THIS) PURE;
2815d114f48fSGiannis Adamopoulos STDMETHOD_(ULONG,Release) (THIS) PURE;
2816d114f48fSGiannis Adamopoulos
2817d114f48fSGiannis Adamopoulos // *** IShellFolderBand Methods ***
2818d114f48fSGiannis Adamopoulos STDMETHOD(InitializeSFB)(THIS_ IShellFolder *psf, PCIDLIST_ABSOLUTE pidl) PURE;
2819d114f48fSGiannis Adamopoulos STDMETHOD(SetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE;
2820d114f48fSGiannis Adamopoulos STDMETHOD(GetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE;
2821d114f48fSGiannis Adamopoulos };
2822129f98b4SGiannis Adamopoulos #undef INTERFACE
2823129f98b4SGiannis Adamopoulos
28241df87d7fSHermès Bélusca-Maïto #if (NTDDI_VERSION >= NTDDI_WIN2K) && (NTDDI_VERSION <= NTDDI_WINXPSP2)
2825c2c66affSColin Finck /*****************************************************************************
2826c2c66affSColin Finck * Control Panel functions
2827c2c66affSColin Finck */
28281df87d7fSHermès Bélusca-Maïto DECLARE_HANDLE(FARPROC16);
28290bf768a1SHermès Bélusca-Maïto LRESULT WINAPI CallCPLEntry16(HINSTANCE hMod, FARPROC16 pFunc, HWND dw3, UINT dw4, LPARAM dw5, LPARAM dw6);
28301df87d7fSHermès Bélusca-Maïto #endif
2831c2c66affSColin Finck
2832c2c66affSColin Finck #ifdef __cplusplus
2833c2c66affSColin Finck } /* extern "C" */
2834c2c66affSColin Finck #endif /* defined(__cplusplus) */
2835c2c66affSColin Finck
2836c2c66affSColin Finck #endif /* __WINE_SHLOBJ_H */
2837