source: trunk/include/win/wine/obj_shellfolder.h

Last change on this file was 21514, checked in by dmik, 15 years ago

Added SHCOLSTATEF typedef.

File size: 14.8 KB
Line 
1/*
2 * Defines the COM interfaces and APIs related to IShellFolder
3 *
4 * Depends on 'obj_base.h'.
5 */
6
7#ifndef __WINE_WINE_OBJ_SHELLFOLDER_H
8#define __WINE_WINE_OBJ_SHELLFOLDER_H
9
10#include "wine/obj_base.h"
11#include "wine/obj_moniker.h" /* for LPBC */
12#include "wine/obj_enumidlist.h"
13#include "wine/obj_oleaut.h"
14#include "winbase.h"
15#include "shtypes.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif /* defined(__cplusplus) */
20
21/*****************************************************************************
22 * Predeclare the interfaces
23 */
24typedef struct IShellFolder IShellFolder, *LPSHELLFOLDER;
25
26typedef struct IPersistFolder IPersistFolder, *LPPERSISTFOLDER;
27
28DEFINE_GUID(IID_IPersistFolder2, 0x1ac3d9f0L, 0x175C, 0x11D1, 0x95, 0xBE, 0x00, 0x60, 0x97, 0x97, 0xEA, 0x4F);
29typedef struct IPersistFolder2 IPersistFolder2, *LPPERSISTFOLDER2;
30
31DEFINE_GUID(IID_IShellFolder2, 0xB82C5AA8, 0xA41B, 0x11D2, 0xBE, 0x32, 0x0, 0xc0, 0x4F, 0xB9, 0x36, 0x61);
32typedef struct IShellFolder2 IShellFolder2, *LPSHELLFOLDER2;
33
34DEFINE_GUID(IID_IEnumExtraSearch, 0xE700BE1, 0x9DB6, 0x11D1, 0xA1, 0xCE, 0x0, 0xc0, 0x4F, 0xD7, 0x5D, 0x13);
35typedef struct IEnumExtraSearch IEnumExtraSearch, *LPENUMEXTRASEARCH;
36
37/*****************************************************************************
38 * IEnumExtraSearch interface
39 */
40
41typedef struct
42{
43 GUID guidSearch;
44 WCHAR wszFriendlyName[80];
45 WCHAR wszMenuText[80];
46 WCHAR wszHelpText[MAX_PATH];
47 WCHAR wszUrl[2084];
48 WCHAR wszIcon[MAX_PATH+10];
49 WCHAR wszGreyIcon[MAX_PATH+10];
50 WCHAR wszClrIcon[MAX_PATH+10];
51} EXTRASEARCH,* LPEXTRASEARCH;
52
53#define ICOM_INTERFACE IEnumExtraSearch
54#define IEnumExtraSearch_METHODS \
55 ICOM_METHOD3(HRESULT, Next, ULONG, celt, LPEXTRASEARCH*, rgelt, ULONG*, pceltFetched) \
56 ICOM_METHOD1(HRESULT, Skip, ULONG, celt) \
57 ICOM_METHOD (HRESULT, Reset) \
58 ICOM_METHOD1(HRESULT, Clone, IEnumExtraSearch**, ppenum)
59#define IEnumExtraSearch_IMETHODS \
60 IUnknown_IMETHODS \
61 IEnumExtraSearch_METHODS
62ICOM_DEFINE(IEnumExtraSearch,IUnknown)
63#undef ICOM_INTERFACE
64
65/*** IUnknown methods ***/
66#define IEnumIDList_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
67#define IEnumIDList_AddRef(p) ICOM_CALL (AddRef,p)
68#define IEnumIDList_Release(p) ICOM_CALL (Release,p)
69/*** IEnumIDList methods ***/
70#define IEnumIDList_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
71#define IEnumIDList_Skip(p,a) ICOM_CALL1(Skip,p,a)
72#define IEnumIDList_Reset(p) ICOM_CALL(Reset,p)
73#define IEnumIDList_Clone(p,a) ICOM_CALL1(Clone,p,a)
74
75/*****************************************************************************
76 * IShellFolder::GetDisplayNameOf/SetNameOf uFlags
77 */
78typedef enum
79{ SHGDN_NORMAL = 0, /* default (display purpose) */
80 SHGDN_INFOLDER = 1, /* displayed under a folder (relative)*/
81 SHGDN_FORPARSING = 0x8000 /* for ParseDisplayName or path */
82} SHGNO;
83
84/*****************************************************************************
85 * IShellFolder::EnumObjects
86 */
87typedef enum tagSHCONTF
88{ SHCONTF_FOLDERS = 32, /* for shell browser */
89 SHCONTF_NONFOLDERS = 64, /* for default view */
90 SHCONTF_INCLUDEHIDDEN = 128 /* for hidden/system objects */
91} SHCONTF;
92
93/*****************************************************************************
94 * IShellFolder::GetAttributesOf flags
95 */
96#define SFGAO_CANCOPY DROPEFFECT_COPY /* Objects can be copied */
97#define SFGAO_CANMOVE DROPEFFECT_MOVE /* Objects can be moved */
98#define SFGAO_CANLINK DROPEFFECT_LINK /* Objects can be linked */
99#define SFGAO_CANRENAME 0x00000010L /* Objects can be renamed */
100#define SFGAO_CANDELETE 0x00000020L /* Objects can be deleted */
101#define SFGAO_HASPROPSHEET 0x00000040L /* Objects have property sheets */
102#define SFGAO_DROPTARGET 0x00000100L /* Objects are drop target */
103#define SFGAO_CAPABILITYMASK 0x00000177L
104#define SFGAO_LINK 0x00010000L /* Shortcut (link) */
105#define SFGAO_SHARE 0x00020000L /* shared */
106#define SFGAO_READONLY 0x00040000L /* read-only */
107#define SFGAO_GHOSTED 0x00080000L /* ghosted icon */
108#define SFGAO_HIDDEN 0x00080000L /* hidden object */
109#define SFGAO_DISPLAYATTRMASK 0x000F0000L
110#define SFGAO_FILESYSANCESTOR 0x10000000L /* It contains file system folder */
111#define SFGAO_FOLDER 0x20000000L /* It's a folder. */
112#define SFGAO_FILESYSTEM 0x40000000L /* is a file system thing (file/folder/root) */
113#define SFGAO_HASSUBFOLDER 0x80000000L /* Expandable in the map pane */
114#define SFGAO_CONTENTSMASK 0x80000000L
115#define SFGAO_VALIDATE 0x01000000L /* invalidate cached information */
116#define SFGAO_REMOVABLE 0x02000000L /* is this removeable media? */
117#define SFGAO_BROWSABLE 0x08000000L /* is in-place browsable */
118#define SFGAO_NONENUMERATED 0x00100000L /* is a non-enumerated object */
119#define SFGAO_NEWCONTENT 0x00200000L /* should show bold in explorer tree */
120
121/************************************************************************
122 *
123 * FOLDERSETTINGS
124*/
125
126typedef LPBYTE LPVIEWSETTINGS;
127
128/* NB Bitfields. */
129/* FWF_DESKTOP implies FWF_TRANSPARENT/NOCLIENTEDGE/NOSCROLL */
130typedef enum
131{ FWF_AUTOARRANGE = 0x0001,
132 FWF_ABBREVIATEDNAMES = 0x0002,
133 FWF_SNAPTOGRID = 0x0004,
134 FWF_OWNERDATA = 0x0008,
135 FWF_BESTFITWINDOW = 0x0010,
136 FWF_DESKTOP = 0x0020,
137 FWF_SINGLESEL = 0x0040,
138 FWF_NOSUBFOLDERS = 0x0080,
139 FWF_TRANSPARENT = 0x0100,
140 FWF_NOCLIENTEDGE = 0x0200,
141 FWF_NOSCROLL = 0x0400,
142 FWF_ALIGNLEFT = 0x0800,
143 FWF_SINGLECLICKACTIVATE=0x8000 /* TEMPORARY -- NO UI FOR THIS */
144} FOLDERFLAGS;
145
146typedef enum
147{ FVM_ICON = 1,
148 FVM_SMALLICON = 2,
149 FVM_LIST = 3,
150 FVM_DETAILS = 4
151} FOLDERVIEWMODE;
152
153typedef struct
154{ UINT ViewMode; /* View mode (FOLDERVIEWMODE values) */
155 UINT fFlags; /* View options (FOLDERFLAGS bits) */
156} FOLDERSETTINGS, *LPFOLDERSETTINGS;
157
158typedef const FOLDERSETTINGS * LPCFOLDERSETTINGS;
159
160/************************************************************************
161 * Desktopfolder
162 */
163
164extern IShellFolder * pdesktopfolder;
165
166DWORD WINAPI SHGetDesktopFolder(IShellFolder * *);
167
168/*****************************************************************************
169 * IShellFolder interface
170 */
171#define ICOM_INTERFACE IShellFolder
172#define IShellFolder_METHODS \
173 ICOM_METHOD6( HRESULT, ParseDisplayName, HWND, hwndOwner,LPBC, pbcReserved, LPOLESTR, lpszDisplayName, ULONG *, pchEaten, LPITEMIDLIST *, ppidl, ULONG *, pdwAttributes) \
174 ICOM_METHOD3( HRESULT, EnumObjects, HWND, hwndOwner, DWORD, grfFlags, LPENUMIDLIST *, ppenumIDList)\
175 ICOM_METHOD4( HRESULT, BindToObject, LPCITEMIDLIST, pidl, LPBC, pbcReserved, REFIID, riid, LPVOID *, ppvOut)\
176 ICOM_METHOD4( HRESULT, BindToStorage, LPCITEMIDLIST, pidl, LPBC, pbcReserved, REFIID, riid, LPVOID *, ppvObj)\
177 ICOM_METHOD3( HRESULT, CompareIDs, LPARAM, lParam, LPCITEMIDLIST, pidl1, LPCITEMIDLIST, pidl2)\
178 ICOM_METHOD3( HRESULT, CreateViewObject, HWND, hwndOwner, REFIID, riid, LPVOID *, ppvOut)\
179 ICOM_METHOD3( HRESULT, GetAttributesOf, UINT, cidl, LPCITEMIDLIST *, apidl, ULONG *, rgfInOut)\
180 ICOM_METHOD6( HRESULT, GetUIObjectOf, HWND, hwndOwner, UINT, cidl, LPCITEMIDLIST *, apidl, REFIID, riid, UINT *, prgfInOut, LPVOID *, ppvOut)\
181 ICOM_METHOD3( HRESULT, GetDisplayNameOf, LPCITEMIDLIST, pidl, DWORD, uFlags, LPSTRRET, lpName)\
182 ICOM_METHOD5( HRESULT, SetNameOf, HWND, hwndOwner, LPCITEMIDLIST, pidl,LPCOLESTR, lpszName, DWORD, uFlags,LPITEMIDLIST *, ppidlOut)
183#define IShellFolder_IMETHODS \
184 IUnknown_IMETHODS \
185 IShellFolder_METHODS
186ICOM_DEFINE(IShellFolder,IUnknown)
187#undef ICOM_INTERFACE
188
189/*** IUnknown methods ***/
190#define IShellFolder_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
191#define IShellFolder_AddRef(p) ICOM_CALL (AddRef,p)
192#define IShellFolder_Release(p) ICOM_CALL (Release,p)
193/*** IShellFolder methods ***/
194#define IShellFolder_ParseDisplayName(p,a,b,c,d,e,f) ICOM_CALL6(ParseDisplayName,p,a,b,c,d,e,f)
195#define IShellFolder_EnumObjects(p,a,b,c) ICOM_CALL3(EnumObjects,p,a,b,c)
196#define IShellFolder_BindToObject(p,a,b,c,d) ICOM_CALL4(BindToObject,p,a,b,c,d)
197#define IShellFolder_BindToStorage(p,a,b,c,d) ICOM_CALL4(BindToStorage,p,a,b,c,d)
198#define IShellFolder_CompareIDs(p,a,b,c) ICOM_CALL3(CompareIDs,p,a,b,c)
199#define IShellFolder_CreateViewObject(p,a,b,c) ICOM_CALL3(CreateViewObject,p,a,b,c)
200#define IShellFolder_GetAttributesOf(p,a,b,c) ICOM_CALL3(GetAttributesOf,p,a,b,c)
201#define IShellFolder_GetUIObjectOf(p,a,b,c,d,e,f) ICOM_CALL6(GetUIObjectOf,p,a,b,c,d,e,f)
202#define IShellFolder_GetDisplayNameOf(p,a,b,c) ICOM_CALL3(GetDisplayNameOf,p,a,b,c)
203#define IShellFolder_SetNameOf(p,a,b,c,d,e) ICOM_CALL5(SetNameOf,p,a,b,c,d,e)
204
205/*****************************************************************************
206 * IShellFolder2 interface
207 */
208/* IShellFolder2 */
209
210/* GetDefaultColumnState */
211typedef enum
212{
213 SHCOLSTATE_TYPE_STR = 0x00000001,
214 SHCOLSTATE_TYPE_INT = 0x00000002,
215 SHCOLSTATE_TYPE_DATE = 0x00000003,
216 SHCOLSTATE_TYPEMASK = 0x0000000F,
217 SHCOLSTATE_ONBYDEFAULT = 0x00000010,
218 SHCOLSTATE_SLOW = 0x00000020,
219 SHCOLSTATE_EXTENDED = 0x00000040,
220 SHCOLSTATE_SECONDARYUI = 0x00000080,
221 SHCOLSTATE_HIDDEN = 0x00000100
222} SHCOLSTATE;
223
224typedef DWORD SHCOLSTATEF;
225
226typedef struct
227{
228 GUID fmtid;
229 DWORD pid;
230} SHCOLUMNID, *LPSHCOLUMNID;
231typedef const SHCOLUMNID* LPCSHCOLUMNID;
232
233/* GetDetailsEx */
234#define PID_FINDDATA 0
235#define PID_NETRESOURCE 1
236#define PID_DESCRIPTIONID 2
237
238typedef struct
239{
240 int fmt;
241 int cxChar;
242 STRRET str;
243} SHELLDETAILS, *LPSHELLDETAILS;
244
245#define ICOM_INTERFACE IShellFolder2
246#define IShellFolder2_METHODS \
247 ICOM_METHOD1( HRESULT, GetDefaultSearchGUID, LPGUID, lpguid)\
248 ICOM_METHOD1( HRESULT, EnumSearches, LPENUMEXTRASEARCH *, ppEnum) \
249 ICOM_METHOD3( HRESULT, GetDefaultColumn, DWORD, dwReserved, ULONG *, pSort, ULONG *, pDisplay)\
250 ICOM_METHOD2( HRESULT, GetDefaultColumnState, UINT, iColumn, DWORD *, pcsFlags)\
251 ICOM_METHOD3( HRESULT, GetDetailsEx, LPCITEMIDLIST, pidl, const SHCOLUMNID *, pscid, VARIANT *, pv)\
252 ICOM_METHOD3( HRESULT, GetDetailsOf, LPCITEMIDLIST, pidl, UINT, iColumn, LPSHELLDETAILS, pDetails)\
253 ICOM_METHOD2( HRESULT, MapNameToSCID, LPCWSTR, pwszName, SHCOLUMNID *, pscid)
254#define IShellFolder2_IMETHODS \
255 IShellFolder_METHODS \
256 IShellFolder2_METHODS
257ICOM_DEFINE(IShellFolder2, IShellFolder)
258#undef ICOM_INTERFACE
259
260/*** IUnknown methods ***/
261#define IShellFolder2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
262#define IShellFolder2_AddRef(p) ICOM_CALL (AddRef,p)
263#define IShellFolder2_Release(p) ICOM_CALL (Release,p)
264/*** IShellFolder methods ***/
265#define IShellFolder2_ParseDisplayName(p,a,b,c,d,e,f) ICOM_CALL6(ParseDisplayName,p,a,b,c,d,e,f)
266#define IShellFolder2_EnumObjects(p,a,b,c) ICOM_CALL3(EnumObjects,p,a,b,c)
267#define IShellFolder2_BindToObject(p,a,b,c,d) ICOM_CALL4(BindToObject,p,a,b,c,d)
268#define IShellFolder2_BindToStorage(p,a,b,c,d) ICOM_CALL4(BindToStorage,p,a,b,c,d)
269#define IShellFolder2_CompareIDs(p,a,b,c) ICOM_CALL3(CompareIDs,p,a,b,c)
270#define IShellFolder2_CreateViewObject(p,a,b,c) ICOM_CALL3(CreateViewObject,p,a,b,c)
271#define IShellFolder2_GetAttributesOf(p,a,b,c) ICOM_CALL3(GetAttributesOf,p,a,b,c)
272#define IShellFolder2_GetUIObjectOf(p,a,b,c,d,e,f) ICOM_CALL6(GetUIObjectOf,p,a,b,c,d,e,f)
273#define IShellFolder2_GetDisplayNameOf(p,a,b,c) ICOM_CALL3(GetDisplayNameOf,p,a,b,c)
274#define IShellFolder2_SetNameOf(p,a,b,c,d,e) ICOM_CALL5(SetNameOf,p,a,b,c,d,e)
275/*** IShellFolder2 methods ***/
276#define IShellFolder2_GetDefaultSearchGUID(p,a) ICOM_CALL1(GetDefaultSearchGUID,p,a)
277#define IShellFolder2_EnumSearches(p,a) ICOM_CALL1(EnumSearches,p,a)
278#define IShellFolder2_GetDefaultColumn(p,a,b,c) ICOM_CALL3(GetDefaultColumn,p,a,b,c)
279#define IShellFolder2_GetDefaultColumnState(p,a,b) ICOM_CALL2(GetDefaultColumnState,p,a,b)
280#define IShellFolder2_GetDetailsEx(p,a,b,c) ICOM_CALL3(GetDetailsEx,p,a,b,c)
281#define IShellFolder2_GetDetailsOf(p,a,b,c) ICOM_CALL3(GetDetailsOf,p,a,b,c)
282#define IShellFolder2_MapNameToSCID(p,a,b) ICOM_CALL2(MapNameToSCID,p,a,b)
283
284/*****************************************************************************
285 * IPersistFolder interface
286 */
287
288/* ClassID's */
289DEFINE_GUID (CLSID_SFMyComp,0x20D04FE0,0x3AEA,0x1069,0xA2,0xD8,0x08,0x00,0x2B,0x30,0x30,0x9D);
290DEFINE_GUID (CLSID_SFINet, 0x871C5380,0x42A0,0x1069,0xA2,0xEA,0x08,0x00,0x2B,0x30,0x30,0x9D);
291DEFINE_GUID (CLSID_SFFile, 0xF3364BA0,0x65B9,0x11CE,0xA9,0xBA,0x00,0xAA,0x00,0x4A,0xE8,0x37);
292
293#define ICOM_INTERFACE IPersistFolder
294#define IPersistFolder_METHODS \
295 ICOM_METHOD1( HRESULT, Initialize, LPCITEMIDLIST, pidl)
296#define IPersistFolder_IMETHODS \
297 IPersist_IMETHODS \
298 IPersistFolder_METHODS
299ICOM_DEFINE(IPersistFolder, IPersist)
300#undef ICOM_INTERFACE
301
302/*** IUnknown methods ***/
303#define IPersistFolder_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
304#define IPersistFolder_AddRef(p) ICOM_CALL (AddRef,p)
305#define IPersistFolder_Release(p) ICOM_CALL (Release,p)
306/*** IPersist methods ***/
307#define IPersistFolder_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
308/*** IPersistFolder methods ***/
309#define IPersistFolder_Initialize(p,a) ICOM_CALL1(Initialize,p,a)
310
311/*****************************************************************************
312 * IPersistFolder2 interface
313 */
314
315#define ICOM_INTERFACE IPersistFolder2
316#define IPersistFolder2_METHODS \
317 ICOM_METHOD1( HRESULT, GetCurFolder, LPITEMIDLIST*, pidl)
318#define IPersistFolder2_IMETHODS \
319 IPersist_IMETHODS \
320 IPersistFolder_METHODS \
321 IPersistFolder2_METHODS
322ICOM_DEFINE(IPersistFolder2, IPersistFolder)
323#undef ICOM_INTERFACE
324
325/*** IUnknown methods ***/
326#define IPersistFolder2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
327#define IPersistFolder2_AddRef(p) ICOM_CALL (AddRef,p)
328#define IPersistFolder2_Release(p) ICOM_CALL (Release,p)
329/*** IPersist methods ***/
330#define IPersistFolder2_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
331/*** IPersistFolder methods ***/
332#define IPersistFolder2_Initialize(p,a) ICOM_CALL1(Initialize,p,a)
333/*** IPersistFolder2 methods ***/
334#define IPersistFolder2_GetCurFolder(p,a) ICOM_CALL1(GetCurFolder,p,a)
335
336#ifdef __cplusplus
337} /* extern "C" */
338#endif /* defined(__cplusplus) */
339
340#endif /* __WINE_WINE_OBJ_SHELLFOLDER_H */
Note: See TracBrowser for help on using the repository browser.