ddraw: Avoid some forward declarations.
[wine] / include / shobjidl.idl
1 /*
2  * COM interfaces for shell objects
3  *
4  * Copyright (C) 1999 Juergen Schmied
5  * Copyright (C) 2003 Alexandre Julliard
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21
22 import "objidl.idl";
23 import "oleidl.idl";
24 import "oaidl.idl";
25 import "docobj.idl";
26 import "shtypes.idl";
27 import "servprov.idl";
28 import "comcat.idl";
29 import "propidl.idl";
30 /* FIXME: import "prsht.idl";*/
31 import "msxml.idl";
32 import "wtypes.idl";
33 /* FIXME: import "propsys.idl"; */
34 /* FIXME: import "structuredquery.idl"; */
35
36 cpp_quote("/* FIXME: #include <sherrors.h> */")
37
38
39 /*****************************************************************************
40  * IPersistFolder interface
41  */
42 [
43     object,
44     uuid(000214ea-0000-0000-c000-000000000046),
45     pointer_default(unique)
46 ]
47 interface IPersistFolder : IPersist
48 {
49     typedef IPersistFolder *LPPERSISTFOLDER;
50
51     HRESULT Initialize( [in] LPCITEMIDLIST pidl );
52 }
53
54
55 /*****************************************************************************
56  * IPersistFolder2 interface
57  */
58 [
59     object,
60     uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f),
61     pointer_default(unique)
62 ]
63 interface IPersistFolder2 : IPersistFolder
64 {
65     typedef IPersistFolder2 *LPPERSISTFOLDER2;
66
67     HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl );
68 }
69
70
71 /*****************************************************************************
72  * IPersistIDList interface
73  */
74 [
75     object,
76     uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5),
77     pointer_default(unique)
78 ]
79 interface IPersistIDList : IPersist
80 {
81     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
82     HRESULT GetIDList( [out] LPITEMIDLIST *ppidl );
83 }
84
85
86 /*****************************************************************************
87  * IEnumIDList interface
88  */
89 [
90     object,
91     uuid(000214f2-0000-0000-c000-000000000046),
92     pointer_default(unique)
93 ]
94 interface IEnumIDList : IUnknown
95 {
96     typedef IEnumIDList *LPENUMIDLIST;
97
98     HRESULT Next(
99         [in] ULONG celt,
100         [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt,
101         [out] ULONG *pceltFetched);
102
103     HRESULT Skip( [in] ULONG celt );
104     HRESULT Reset();
105     HRESULT Clone( [out] IEnumIDList **ppenum );
106 }
107
108 /*****************************************************************************
109  * IShellPropSheetExt interface
110  */
111 cpp_quote("#if 0")
112     typedef LPARAM LPFNSVADDPROPSHEETPAGE;
113 cpp_quote("#else")
114 cpp_quote("#include <prsht.h>")
115 cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;")
116 cpp_quote("#endif")
117
118 [
119     object,
120     uuid(000214E9-0000-0000-C000-000000000046),
121     pointer_default(unique),
122     local
123 ]
124 interface IShellPropSheetExt : IUnknown
125 {
126     enum tagSHELLPROPSHEETEXTPAGEID {
127         EXPPS_FILETYPES = 0x1
128     };
129
130     typedef UINT EXPPS;
131
132     HRESULT AddPages(
133         [in] LPFNSVADDPROPSHEETPAGE pfnAddPage,
134         [in] LPARAM lParam);
135     HRESULT ReplacePage(
136         [in] EXPPS uPageID,
137         [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
138         [in] LPARAM lParam);
139 }
140 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
141
142 /*****************************************************************************
143  * IShellFolder interface
144  */
145 [
146     object,
147     uuid(000214e6-0000-0000-c000-000000000046),
148     pointer_default(unique)
149 ]
150 interface IShellFolder : IUnknown
151 {
152     typedef IShellFolder * LPSHELLFOLDER;
153
154     typedef enum tagSHGDN
155     {
156         SHGDN_NORMAL = 0,
157         SHGDN_INFOLDER = 1,
158         SHGDN_FOREDITING = 0x1000,
159         SHGDN_INCLUDE_NONFILESYS = 0x2000,
160         SHGDN_FORADDRESSBAR = 0x4000,
161         SHGDN_FORPARSING = 0x8000
162     } SHGNO;
163
164     typedef DWORD SHGDNF;
165
166     enum tagSHCONTF
167     {
168         SHCONTF_FOLDERS = 32,
169         SHCONTF_NONFOLDERS = 64,
170         SHCONTF_INCLUDEHIDDEN = 128,
171         SHCONTF_INIT_ON_FIRST_NEXT = 256,
172         SHCONTF_NETPRINTERSRCH = 512,
173         SHCONTF_SHAREABLE = 1024,
174         SHCONTF_STORAGE = 2048
175     };
176
177     typedef DWORD SHCONTF;
178
179     cpp_quote("#define SFGAO_CANCOPY           DROPEFFECT_COPY")
180     cpp_quote("#define SFGAO_CANMOVE           DROPEFFECT_MOVE")
181     cpp_quote("#define SFGAO_CANLINK           DROPEFFECT_LINK")
182     cpp_quote("#define SFGAO_STORAGE           0x00000008L")
183     cpp_quote("#define SFGAO_CANRENAME         0x00000010L")
184     cpp_quote("#define SFGAO_CANDELETE         0x00000020L")
185     cpp_quote("#define SFGAO_HASPROPSHEET      0x00000040L")
186     cpp_quote("#define SFGAO_DROPTARGET        0x00000100L")
187     cpp_quote("#define SFGAO_CAPABILITYMASK    0x00000177L")
188     cpp_quote("#define SFGAO_ENCRYPTED         0x00002000L")
189     cpp_quote("#define SFGAO_ISSLOW            0x00004000L")
190     cpp_quote("#define SFGAO_GHOSTED           0x00008000L")
191     cpp_quote("#define SFGAO_LINK              0x00010000L")
192     cpp_quote("#define SFGAO_SHARE             0x00020000L")
193     cpp_quote("#define SFGAO_READONLY          0x00040000L")
194     cpp_quote("#define SFGAO_HIDDEN            0x00080000L")
195     cpp_quote("#define SFGAO_DISPLAYATTRMASK   0x000FC000L")
196     cpp_quote("#define SFGAO_FILESYSANCESTOR   0x10000000L")
197     cpp_quote("#define SFGAO_FOLDER            0x20000000L")
198     cpp_quote("#define SFGAO_FILESYSTEM        0x40000000L")
199     cpp_quote("#define SFGAO_HASSUBFOLDER      0x80000000L")
200     cpp_quote("#define SFGAO_CONTENTSMASK      0x80000000L")
201     cpp_quote("#define SFGAO_VALIDATE          0x01000000L")
202     cpp_quote("#define SFGAO_REMOVABLE         0x02000000L")
203     cpp_quote("#define SFGAO_COMPRESSED        0x04000000L")
204     cpp_quote("#define SFGAO_BROWSABLE         0x08000000L")
205     cpp_quote("#define SFGAO_NONENUMERATED     0x00100000L")
206     cpp_quote("#define SFGAO_NEWCONTENT        0x00200000L")
207     cpp_quote("#define SFGAO_STREAM            0x00400000L")
208     cpp_quote("#define SFGAO_STORAGEANCESTOR   0x00800000L")
209
210     typedef ULONG SFGAOF;
211
212     HRESULT ParseDisplayName(
213         [in] HWND hwndOwner,
214         [in] LPBC pbcReserved,
215         [in, string] LPOLESTR lpszDisplayName,
216         [out] ULONG *pchEaten,
217         [out] LPITEMIDLIST *ppidl,
218         [in, out, unique] ULONG *pdwAttributes);
219
220     HRESULT EnumObjects(
221         [in] HWND hwndOwner,
222         [in] SHCONTF grfFlags,
223         [out] IEnumIDList **ppenumIDList);
224
225     HRESULT BindToObject(
226         [in] LPCITEMIDLIST pidl,
227         [in] LPBC pbcReserved,
228         [in] REFIID riid,
229         [out, iid_is(riid)] void **ppvOut);
230
231     HRESULT BindToStorage(
232         [in] LPCITEMIDLIST pidl,
233         [in] LPBC pbcReserved,
234         [in] REFIID riid,
235         [out, iid_is(riid)] void **ppvObj);
236
237     HRESULT CompareIDs(
238         [in] LPARAM lParam,
239         [in] LPCITEMIDLIST pidl1,
240         [in] LPCITEMIDLIST pidl2);
241
242     HRESULT CreateViewObject(
243         [in] HWND hwndOwner,
244         [in] REFIID riid,
245         [out, iid_is(riid)] void **ppvOut);
246
247     HRESULT GetAttributesOf(
248         [in] UINT cidl,
249         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
250         [in, out] SFGAOF *rgfInOut);
251
252     HRESULT GetUIObjectOf(
253         [in] HWND hwndOwner,
254         [in] UINT cidl,
255         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
256         [in] REFIID riid,
257         [in, out, unique] UINT *prgfInOut,
258         [out, iid_is(riid)] void **ppvOut);
259
260     HRESULT GetDisplayNameOf(
261         [in] LPCITEMIDLIST pidl,
262         [in] SHGDNF uFlags,
263         [out] STRRET *lpName);
264
265     HRESULT SetNameOf(
266         [in] HWND hwnd,
267         [in] LPCITEMIDLIST pidl,
268         [in, string] LPCOLESTR lpszName,
269         [in] SHGDNF uFlags,
270         [out] LPITEMIDLIST *ppidlOut);
271 }
272
273
274 /*****************************************************************************
275  * IEnumExtraSearch interface
276  */
277 [
278     object,
279     uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13),
280     pointer_default(unique)
281 ]
282 interface IEnumExtraSearch : IUnknown
283 {
284     typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
285
286     typedef struct
287     {
288         GUID guidSearch;
289         WCHAR wszFriendlyName[80];
290         /*
291          *WCHAR wszMenuText[80];
292          *WCHAR wszHelpText[MAX_PATH];
293          */
294         WCHAR wszUrl[2084];
295         /*
296          *WCHAR wszIcon[MAX_PATH+10];
297          *WCHAR wszGreyIcon[MAX_PATH+10];
298          *WCHAR wszClrIcon[MAX_PATH+10];
299          */
300     } EXTRASEARCH, *LPEXTRASEARCH;
301
302     HRESULT Next(
303         [in] ULONG celt,
304         [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt,
305         [out] ULONG *pceltFetched);
306
307     HRESULT Skip( [in] ULONG celt );
308     HRESULT Reset();
309     HRESULT Clone( [out] IEnumExtraSearch **ppenum );
310 }
311
312
313 /*****************************************************************************
314  * IShellFolder2 interface
315  */
316 [
317     object,
318     uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1),
319     pointer_default(unique)
320 ]
321 interface IShellFolder2 : IShellFolder
322 {
323     typedef struct
324     {
325         GUID    fmtid;
326         DWORD   pid;
327     } SHCOLUMNID, *LPSHCOLUMNID;
328     typedef const SHCOLUMNID *LPCSHCOLUMNID;
329
330     HRESULT GetDefaultSearchGUID( [out] GUID *lpguid );
331     HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum );
332     HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
333     HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
334     HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
335     HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
336     HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
337 }
338
339 /*****************************************************************************
340  * IShellItem interface
341  */
342 [
343     object,
344     uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe),
345     pointer_default(unique)
346 ]
347 interface IShellItem : IUnknown
348 {
349     typedef DWORD SIGDN;
350
351     typedef DWORD SICHINTF;
352
353     HRESULT BindToHandler(
354         [in] IBindCtx *pbc,
355         [in] REFGUID rbhid,
356         [in] REFIID riid,
357         [out, iid_is(riid)] void **ppvOut);
358
359     HRESULT GetParent( [out] IShellItem **ppsi );
360
361     HRESULT GetDisplayName(
362         [in] SIGDN sigdnName,
363         [out] LPWSTR *ppszName);
364
365     HRESULT GetAttributes(
366         [in] SFGAOF sfgaoMask,
367         [out] SFGAOF *psfgaoAttribs);
368
369     HRESULT Compare(
370         [in] IShellItem *psi,
371         [in] SICHINTF hint,
372         [out] int *piOrder);
373 }
374
375 typedef enum tagNWMF {
376     NWMF_UNLOADING        = 0x0001,
377     NWMF_USERINITED       = 0x0002,
378     NWMF_FIRST            = 0x0004,
379     NWMF_OVERRIDEKEY      = 0x0008,
380     NWMF_SHOWHELP         = 0x0010,
381     NWMF_HTMLDIALOG       = 0x0020,
382     NWMF_FROMDIALOGCHILD  = 0x0040,
383     NWMF_USERREQUESTED    = 0x0080,
384     NWMF_USERALLOWED      = 0x0100
385 } NWMF;
386
387 [
388     uuid(d2bc4c84-3f72-4a52-a604-7bcbf3982cbb),
389     object,
390     pointer_default(unique)
391 ]
392 interface INewWindowManager : IUnknown
393 {
394     HRESULT EvaluateNewWindow(
395         [in, string] LPCWSTR pszUrl,
396         [in, string] LPCWSTR pszName,
397         [in, string] LPCWSTR pszUrlContext,
398         [in, string] LPCWSTR pszFeatures,
399         [in]         BOOL fReplace,
400         [in]         DWORD dwFlags,
401         [in]         DWORD dwUserActionTime);
402 }
403
404 cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager")
405
406 /*****************************************************************************
407  * FOLDERSETTINGS
408  */
409 typedef char *LPVIEWSETTINGS;
410
411 typedef enum
412 {
413     FWF_AUTOARRANGE         = 0x00000001,
414     FWF_ABBREVIATEDNAMES    = 0x00000002,
415     FWF_SNAPTOGRID          = 0x00000004,
416     FWF_OWNERDATA           = 0x00000008,
417     FWF_BESTFITWINDOW       = 0x00000010,
418     FWF_DESKTOP             = 0x00000020,
419     FWF_SINGLESEL           = 0x00000040,
420     FWF_NOSUBFOLDERS        = 0x00000080,
421     FWF_TRANSPARENT         = 0x00000100,
422     FWF_NOCLIENTEDGE        = 0x00000200,
423     FWF_NOSCROLL            = 0x00000400,
424     FWF_ALIGNLEFT           = 0x00000800,
425     FWF_NOICONS             = 0x00001000,
426     FWF_SHOWSELALWAYS       = 0x00002000,
427     FWF_NOVISIBLE           = 0x00004000,
428     FWF_SINGLECLICKACTIVATE = 0x00008000,
429     FWF_NOWEBVIEW           = 0x00010000,
430     FWF_HIDEFILENAMES       = 0x00020000,
431     FWF_CHECKSELECT         = 0x00040000,
432     FWF_NOENUMREFRESH       = 0x00080000,
433     FWF_NOGROUPING          = 0x00100000,
434     FWF_FULLROWSELECT       = 0x00200000,
435     FWF_NOFILTERS           = 0x00400000,
436     FWF_NOCOLUMNHEADER      = 0x00800000,
437     FWF_NOHEADERINALLVIEWS  = 0x01000000,
438     FWF_EXTENDEDTILES       = 0x02000000,
439     FWF_TRICHECKSELECT      = 0x04000000,
440     FWF_AUTOCHECKSELECT     = 0x08000000,
441     FWF_NOBROWSERVIEWSTATE  = 0x10000000,
442     FWF_SUBSETGROUPS        = 0x20000000,
443     FWF_USESEARCHFOLDER     = 0x40000000,
444     FWF_ALLOWRTLREADING     = 0x80000000
445 } FOLDERFLAGS;
446
447 typedef enum
448 {
449     FVM_AUTO       =-1,
450     FVM_ICON       = 1,
451     FVM_FIRST      = FVM_ICON,
452     FVM_SMALLICON  = 2,
453     FVM_LIST       = 3,
454     FVM_DETAILS    = 4,
455     FVM_THUMBNAIL  = 5,
456     FVM_TILE       = 6,
457     FVM_THUMBSTRIP = 7,
458     FVM_CONTENT    = 8,
459     FVM_LAST       = FVM_CONTENT
460 } FOLDERVIEWMODE;
461
462 typedef struct
463 {
464     UINT ViewMode;
465     UINT fFlags;
466 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
467 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
468
469 /*****************************************************************************
470  * IShellIcon interface
471  */
472 [
473     uuid(000214e5-0000-0000-c000-000000000046),
474     object,
475     pointer_default(unique)
476 ]
477 interface IShellIcon : IUnknown
478 {
479     HRESULT GetIconOf(
480         [in] PCUITEMID_CHILD pidl,
481         [in] UINT flags,
482         [out] int *pIconIndex);
483 }
484
485 /*****************************************************************************
486  * IShellView interface
487  */
488 interface IShellBrowser;  /* forward declaration */
489 [
490     object,
491     uuid(000214e3-0000-0000-c000-000000000046),
492     pointer_default(unique)
493 ]
494 interface IShellView : IOleWindow
495 {
496     typedef IShellView *LPSHELLVIEW;
497
498     cpp_quote("#define SVSI_DESELECT       0x00000000")
499     cpp_quote("#define SVSI_SELECT         0x00000001")
500     cpp_quote("#define SVSI_EDIT           0x00000003")
501     cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
502     cpp_quote("#define SVSI_ENSUREVISIBLE  0x00000008")
503     cpp_quote("#define SVSI_FOCUSED        0x00000010")
504     cpp_quote("#define SVSI_TRANSLATEPT    0x00000020")
505     cpp_quote("#define SVSI_SELECTIONMARK  0x00000040")
506     cpp_quote("#define SVSI_POSITIONITEM   0x00000080")
507     cpp_quote("#define SVSI_CHECK          0x00000100")
508     cpp_quote("#define SVSI_NOSTATECHANGE  0x80000000")
509
510     typedef UINT SVSIF;
511
512     typedef enum
513     {
514         SVGIO_BACKGROUND     = 0x00000000,
515         SVGIO_SELECTION      = 0x00000001,
516         SVGIO_ALLVIEW        = 0x00000002,
517         SVGIO_CHECKED        = 0x00000003,
518         SVGIO_TYPE_MASK      = 0x0000000f,
519         SVGIO_FLAG_VIEWORDER = 0x80000000,
520     } SVGIO;
521
522     typedef enum
523     {
524         SVUIA_DEACTIVATE       = 0,
525         SVUIA_ACTIVATE_NOFOCUS = 1,
526         SVUIA_ACTIVATE_FOCUS   = 2,
527         SVUIA_INPLACEACTIVATE  = 3
528     } SVUIA_STATUS;
529
530     HRESULT TranslateAccelerator( [in] MSG *pmsg );
531     HRESULT EnableModeless( [in] BOOL fEnable );
532     HRESULT UIActivate( [in] UINT uState );
533     HRESULT Refresh();
534     HRESULT CreateViewWindow(
535         [in] IShellView *psvPrevious,
536         [in] LPCFOLDERSETTINGS lpfs,
537         [in] IShellBrowser *psb,
538         [out] RECT *prcView,
539         [out] HWND *phWnd);
540
541     HRESULT DestroyViewWindow();
542     HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
543
544     [local] HRESULT AddPropertySheetPages(
545         [in] DWORD dwReserved,
546         [in] LPFNSVADDPROPSHEETPAGE pfn,
547         [in] LPARAM lparam);
548
549     HRESULT SaveViewState();
550     HRESULT SelectItem(
551         [in] LPCITEMIDLIST pidlItem,
552         [in] SVSIF uFlags);
553     HRESULT GetItemObject(
554         [in] UINT uItem,
555         [in] REFIID riid,
556         [out, iid_is(riid)] void **ppv);
557 }
558
559 [
560     object,
561     uuid(88e39e80-3578-11cf-ae69-08002b2e1262),
562     pointer_default(unique)
563 ]
564 interface IShellView2 : IShellView
565 {
566     typedef GUID SHELLVIEWID;
567 cpp_quote("#include <pshpack8.h>")
568     typedef struct _SV2CVW2_PARAMS
569     {
570         DWORD cbSize;
571         IShellView *psvPrev;
572         LPCFOLDERSETTINGS pfs;
573         IShellBrowser *psbOwner;
574         RECT *prcView;
575         SHELLVIEWID const *pvid;
576         HWND hwndView;
577     } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS;
578 cpp_quote("#include <poppack.h>")
579
580     HRESULT GetView(
581         [in, out] SHELLVIEWID *view_guid,
582         [in] ULONG view_type
583     );
584     HRESULT CreateViewWindow2(
585         [in] LPSV2CVW2_PARAMS view_params
586     );
587     HRESULT HandleRename(
588         [in] LPCITEMIDLIST new_pidl
589     );
590     HRESULT SelectAndPositionItem(
591         [in] LPCITEMIDLIST item,
592         [in] UINT flags,
593         [in] POINT *point
594     );
595 }
596
597 /*****************************************************************************
598  * IFolderView interface
599  */
600 [
601     uuid(cde725b0-ccc9-4519-917e-325d72fab4ce),
602     object,
603     pointer_default(unique)
604 ]
605 interface IFolderView : IUnknown
606 {
607     HRESULT GetCurrentViewMode( [out] UINT *mode );
608     HRESULT SetCurrentViewMode( [in] UINT mode );
609     HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv );
610     HRESULT Item(
611         [in] int index,
612         [out] PITEMID_CHILD *ppidl
613     );
614     HRESULT ItemCount(
615         [in] UINT flags,
616         [out] int *items
617     );
618     HRESULT Items(
619         [in] UINT flags,
620         [in] REFIID riid,
621         [out, iid_is(riid)] void **ppv
622     );
623     HRESULT GetSelectionMarkedItem( [out] int *item );
624     HRESULT GetFocusedItem( [out] int *item );
625     HRESULT GetItemPosition(
626         [in] PCUITEMID_CHILD pidl,
627         [out] POINT* ppt
628     );
629     HRESULT GetSpacing( [in, out, unique] POINT* pt );
630     HRESULT GetDefaultSpacing( [out] POINT* pt );
631     HRESULT GetAutoArrange();
632     HRESULT SelectItem(
633         [in] int item,
634         [in] DWORD flags
635     );
636     HRESULT SelectAndPositionItems(
637         [in] UINT cidl,
638         [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
639         [in, unique, size_is(cidl)] POINT* apt,
640         [in] DWORD flags
641     );
642 }
643
644 /*****************************************************************************
645  * IShellBrowser interface
646  */
647 [
648     object,
649     uuid(000214e2-0000-0000-c000-000000000046),
650     pointer_default(unique)
651 ]
652 interface IShellBrowser : IOleWindow
653 {
654     typedef IShellBrowser *LPSHELLBROWSER;
655
656 cpp_quote("#define SBSP_DEFBROWSER            0x00000000")
657 cpp_quote("#define SBSP_SAMEBROWSER           0x00000001")
658 cpp_quote("#define SBSP_NEWBROWSER            0x00000002")
659 cpp_quote("#define SBSP_DEFMODE               0x00000000")
660 cpp_quote("#define SBSP_OPENMODE              0x00000010")
661 cpp_quote("#define SBSP_EXPLOREMODE           0x00000020")
662 cpp_quote("#define SBSP_HELPMODE              0x00000040")
663 cpp_quote("#define SBSP_NOTRANSFERHIST        0x00000080")
664 cpp_quote("#define SBSP_ABSOLUTE              0x00000000")
665 cpp_quote("#define SBSP_RELATIVE              0x00001000")
666 cpp_quote("#define SBSP_PARENT                0x00002000")
667 cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
668 cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
669 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
670 cpp_quote("#define SBSP_KEEPSAMETEMPLATE      0x00020000")
671 cpp_quote("#define SBSP_KEEPWORDWHEELTEXT     0x00040000")
672 cpp_quote("#define SBSP_ACTIVATE_NOFOCUS      0x00080000")
673 cpp_quote("#define SBSP_CREATENOHISTORY       0x00100000")
674 cpp_quote("#define SBSP_PLAYNOSOUND           0x00200000")
675 cpp_quote("#define SBSP_CALLERUNTURUSTED      0x00800000")
676 cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD    0x01000000")
677 cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD  0x02000000")
678 cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
679 cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
680 cpp_quote("#define SBSP_TRUSTEDFORACTIVEX     0x10000000")
681 cpp_quote("#define SBSP_FEEDNAVIGATION        0x20000000")
682 cpp_quote("#define SBSP_REDIRECT              0x40000000")
683 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
684
685 cpp_quote("#define FCW_STATUS      0x0001")
686 cpp_quote("#define FCW_TOOLBAR     0x0002")
687 cpp_quote("#define FCW_TREE        0x0003")
688 cpp_quote("#define FCW_INTERNETBAR 0x0006")
689 cpp_quote("#define FCW_PROGRESS    0x0008")
690
691 cpp_quote("#define FCT_MERGE       0x0001")
692 cpp_quote("#define FCT_CONFIGABLE  0x0002")
693 cpp_quote("#define FCT_ADDTOEND    0x0004")
694
695 cpp_quote("#if 0")
696     typedef LPARAM LPTBBUTTONSB;
697 cpp_quote("#else")
698 cpp_quote("#include <commctrl.h>")
699 cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;")
700 cpp_quote("#endif")
701
702     HRESULT InsertMenusSB(
703         [in] HMENU hmenuShared,
704         [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
705
706     HRESULT SetMenuSB(
707         [in] HMENU hmenuShared,
708         [in] HOLEMENU holemenuReserved,
709         [in] HWND hwndActiveObject);
710
711     HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
712     HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
713     HRESULT EnableModelessSB( [in] BOOL fEnable );
714     HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
715
716     HRESULT BrowseObject(
717         [in] LPCITEMIDLIST pidl,
718         [in] UINT wFlags);
719
720     HRESULT GetViewStateStream(
721         [in] DWORD grfMode,
722         [out] IStream **ppStrm);
723
724     HRESULT GetControlWindow(
725         [in] UINT id,
726         [out] HWND *phwnd);
727
728     [local] HRESULT SendControlMsg(
729         [in] UINT id,
730         [in] UINT uMsg,
731         [in] WPARAM wParam,
732         [in] LPARAM lParam,
733         [in] LRESULT *pret);
734
735     HRESULT QueryActiveShellView( [out] IShellView **ppshv );
736     HRESULT OnViewWindowActive( [in] IShellView *pshv );
737
738     [local]
739     HRESULT SetToolbarItems(
740         [in] LPTBBUTTONSB lpButtons,
741         [in] UINT nButtons,
742         [in] UINT uFlags);
743 }
744
745
746 /*****************************************************************************
747  * IShellLinkA interface
748  */
749 [
750     object,
751     uuid(000214ee-0000-0000-c000-000000000046),
752     pointer_default(unique)
753 ]
754 interface IShellLinkA : IUnknown
755 {
756     typedef enum
757     {
758         SLR_NO_UI               = 0x0001,
759         SLR_ANY_MATCH           = 0x0002,
760         SLR_UPDATE              = 0x0004,
761         SLR_NOUPDATE            = 0x0008,
762         SLR_NOSEARCH            = 0x0010,
763         SLR_NOTRACK             = 0x0020,
764         SLR_NOLINKINFO          = 0x0040,
765         SLR_INVOKE_MSI          = 0x0080,
766         SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
767     } SLR_FLAGS;
768
769     typedef enum
770     {
771         SLGP_SHORTPATH   = 0x0001,
772         SLGP_UNCPRIORITY = 0x0002,
773         SLGP_RAWPATH     = 0x0004,
774     } SLGP_FLAGS;
775
776     HRESULT GetPath(
777         [out, size_is(cch)] LPSTR pszFile,
778         [in] int cch,
779         [in, out, unique] WIN32_FIND_DATAA *pfd,
780         [in] DWORD fFlags);
781
782     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
783
784     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
785
786     HRESULT GetDescription(
787         [out, size_is(cch)] LPSTR pszName,
788         [in] int cch);
789
790     HRESULT SetDescription( [in] LPCSTR pszName );
791
792     HRESULT GetWorkingDirectory(
793         [out, size_is(cch)] LPSTR pszDir,
794         [in] int cch);
795
796     HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
797
798     HRESULT GetArguments(
799         [out, size_is(cch)] LPSTR pszArgs,
800         [in] int cch);
801
802     HRESULT SetArguments( [in] LPCSTR pszArgs );
803
804     HRESULT GetHotkey( [out] WORD *pwHotkey );
805
806     HRESULT SetHotkey( [in] WORD wHotkey );
807
808     HRESULT GetShowCmd( [out] int *piShowCmd );
809
810     HRESULT SetShowCmd( [in] int iShowCmd );
811
812     HRESULT GetIconLocation(
813         [out, size_is(cch)] LPSTR pszIconPath,
814         [in] int cch,
815         [out] int *piIcon);
816
817     HRESULT SetIconLocation(
818         [in] LPCSTR pszIconPath,
819         [in] int iIcon);
820
821     HRESULT SetRelativePath(
822         [in] LPCSTR pszPathRel,
823         [in] DWORD dwReserved);
824
825     HRESULT Resolve(
826         [in] HWND hwnd,
827         [in] DWORD fFlags);
828
829     HRESULT SetPath( [in] LPCSTR pszFile );
830 }
831
832
833 /*****************************************************************************
834  * IShellLinkW interface
835  */
836 [
837     object,
838     uuid(000214f9-0000-0000-c000-000000000046),
839     pointer_default(unique)
840 ]
841 interface IShellLinkW : IUnknown
842 {
843     HRESULT GetPath(
844         [out, size_is(cch)] LPWSTR pszFile,
845         [in] int cch,
846         [in, out] WIN32_FIND_DATAW *pfd,
847         [in] DWORD fFlags);
848
849     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
850
851     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
852
853     HRESULT GetDescription(
854         [out, size_is(cch)] LPWSTR pszName,
855         [in] int cch);
856
857     HRESULT SetDescription( [in] LPCWSTR pszName );
858
859     HRESULT GetWorkingDirectory(
860         [out, size_is(cch)] LPWSTR pszDir,
861         [in] int cch);
862
863     HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
864
865     HRESULT GetArguments(
866         [out, size_is(cch)] LPWSTR pszArgs,
867         [in] int cch);
868
869     HRESULT SetArguments( [in] LPCWSTR pszArgs );
870
871     HRESULT GetHotkey( [out] WORD *pwHotkey );
872
873     HRESULT SetHotkey( [in] WORD wHotkey );
874
875     HRESULT GetShowCmd( [out] int *piShowCmd );
876
877     HRESULT SetShowCmd( [in] int iShowCmd );
878
879     HRESULT GetIconLocation(
880         [out, size_is(cch)] LPWSTR pszIconPath,
881         [in] int cch,
882         [out] int *piIcon);
883
884     HRESULT SetIconLocation(
885         [in] LPCWSTR pszIconPath,
886         [in] int iIcon);
887
888     HRESULT SetRelativePath(
889         [in] LPCWSTR pszPathRel,
890         [in] DWORD dwReserved);
891
892     HRESULT Resolve(
893         [in] HWND hwnd,
894         [in] DWORD fFlags);
895
896     HRESULT SetPath( [in] LPCWSTR pszFile );
897 }
898
899 cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
900
901
902 /*****************************************************************************
903  * IShellExtInit interface
904  */
905 [
906     object,
907     uuid(000214e8-0000-0000-c000-000000000046),
908     pointer_default(unique),
909     local
910 ]
911 interface IShellExtInit : IUnknown
912 {
913     typedef IShellExtInit *LPSHELLEXTINIT;
914
915     HRESULT Initialize(
916         [in] LPCITEMIDLIST pidlFolder,
917         [in] IDataObject *pdtobj,
918         [in] HKEY hkeyProgID);
919 }
920
921
922 /*******************************************************************************/
923 /* Note: the following interfaces are not in shobjidl.idl under Windows, they  */
924 /* are declared directly in shlobj.h. It hopefully won't break anything to put */
925 /* them here anyway.                                                           */
926 /*******************************************************************************/
927
928 #ifndef MAX_PATH
929 #define MAX_PATH 260
930 #endif
931
932
933 /*****************************************************************************
934  * IPersistFolder3 interface
935  */
936 [
937     object,
938     uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf),
939     pointer_default(unique)
940 ]
941 interface IPersistFolder3 : IPersistFolder2
942 {
943     typedef struct
944     {
945         LPITEMIDLIST    pidlTargetFolder;
946         WCHAR           szTargetParsingName[MAX_PATH];
947         WCHAR           szNetworkProvider[MAX_PATH];
948         DWORD           dwAttributes;
949         int             csidl;
950     } PERSIST_FOLDER_TARGET_INFO;
951
952     HRESULT InitializeEx(
953         [in] IBindCtx *pbc,
954         [in] LPCITEMIDLIST pidlRoot,
955         [in] const PERSIST_FOLDER_TARGET_INFO *ppfti);
956
957     HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti );
958 }
959
960
961 /*****************************************************************************
962  * IExtractIconA interface
963  */
964 [
965     object,
966     uuid(000214eb-0000-0000-c000-000000000046),
967     pointer_default(unique),
968     local
969 ]
970 interface IExtractIconA : IUnknown
971 {
972 cpp_quote("#define GIL_OPENICON     0x0001")
973 cpp_quote("#define GIL_FORSHELL     0x0002")
974 cpp_quote("#define GIL_ASYNC        0x0020")
975 cpp_quote("#define GIL_DEFAULTICON  0x0040")
976 cpp_quote("#define GIL_FORSHORTCUT  0x0080")
977
978 cpp_quote("#define GIL_SIMULATEDOC  0x0001")
979 cpp_quote("#define GIL_PERINSTANCE  0x0002")
980 cpp_quote("#define GIL_PERCLASS     0x0004")
981 cpp_quote("#define GIL_NOTFILENAME  0x0008")
982 cpp_quote("#define GIL_DONTCACHE    0x0010")
983
984     typedef IExtractIconA *LPEXTRACTICONA;
985
986     HRESULT GetIconLocation(
987         [in] UINT uFlags,
988         [out, size_is(cchMax)] LPSTR szIconFile,
989         [in] UINT cchMax,
990         [out] INT *piIndex,
991         [out] UINT *pwFlags);
992
993     HRESULT Extract(
994         [in] LPCSTR pszFile,
995         [in] UINT nIconIndex,
996         [out] HICON *phiconLarge,
997         [out] HICON *phiconSmall,
998         [in] UINT nIconSize );
999 }
1000
1001
1002 /*****************************************************************************
1003  * IExtractIconW interface
1004  */
1005 [
1006     object,
1007     uuid(000214fa-0000-0000-c000-000000000046),
1008     pointer_default(unique),
1009     local
1010 ]
1011 interface IExtractIconW : IUnknown
1012 {
1013     typedef IExtractIconW *LPEXTRACTICONW;
1014
1015     HRESULT GetIconLocation(
1016         [in] UINT uFlags,
1017         [out, size_is(cchMax)] LPWSTR szIconFile,
1018         [in] UINT cchMax,
1019         [out] INT *piIndex,
1020         [out] UINT *pwFlags);
1021
1022     HRESULT Extract(
1023         [in] LPCWSTR pszFile,
1024         [in] UINT nIconIndex,
1025         [out] HICON *phiconLarge,
1026         [out] HICON *phiconSmall,
1027         [in] UINT nIconSize );
1028 }
1029
1030 cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)")
1031 cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)")
1032
1033
1034 /*****************************************************************************
1035  * ICommDlgBrowser interface
1036  */
1037 [
1038     object,
1039     uuid(000214f1-0000-0000-c000-000000000046),
1040     pointer_default(unique)
1041 ]
1042 interface ICommDlgBrowser : IUnknown
1043 {
1044 cpp_quote("#define CDBOSC_SETFOCUS     0x00000000")
1045 cpp_quote("#define CDBOSC_KILLFOCUS    0x00000001")
1046 cpp_quote("#define CDBOSC_SELCHANGE    0x00000002")
1047 cpp_quote("#define CDBOSC_RENAME       0x00000003")
1048 cpp_quote("#define CDBOSC_STATECHANGE  0x00000004")
1049
1050     typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
1051
1052     HRESULT OnDefaultCommand( [in] IShellView *shv );
1053     HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange );
1054     HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl );
1055 }
1056
1057
1058 /*****************************************************************************
1059  * ICommDlgBrowser2 interface
1060  */
1061 [
1062  object,
1063  uuid(10339516-2894-11D2-9039-00C04F8EEB3E),
1064  pointer_default(unique)
1065 ]
1066 interface ICommDlgBrowser2 : ICommDlgBrowser
1067 {
1068
1069     HRESULT Notify(
1070         [in] IShellView *ppshv,
1071         [in] DWORD dwNotifyType);
1072
1073     HRESULT GetDefaultMenuText(
1074         [in] IShellView *ppshv,
1075         [out, string, size_is(cchMax)] LPWSTR pszText,
1076         [in] int cchMax);
1077
1078     HRESULT GetViewFlags(
1079         [out] DWORD *pdwFlags);
1080 }
1081
1082
1083 /*****************************************************************************
1084  * ICommDlgBrowser3 interface
1085  */
1086 [
1087  object,
1088  uuid(C8AD25A1-3294-41EE-8165-71174BD01C57),
1089  pointer_default(unique)
1090 ]
1091 interface ICommDlgBrowser3 : ICommDlgBrowser2
1092 {
1093
1094     HRESULT OnColumnClicked(
1095         [in] IShellView *ppshv,
1096         [in] int iColumn);
1097
1098     HRESULT GetCurrentFilter(
1099         [out, string, size_is(cchFileSpec)] LPWSTR pszFileSpec,
1100         [in] int cchFileSpec);
1101
1102     HRESULT OnPreviewCreated(
1103         [in] IShellView *ppshv);
1104 }
1105
1106
1107 /*****************************************************************************
1108  * IDockingWindowFrame interface
1109  */
1110 [
1111     object,
1112     uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8),
1113     pointer_default(unique),
1114     local
1115 ]
1116 interface IDockingWindowFrame : IOleWindow
1117 {
1118 cpp_quote("#define DWFRF_NORMAL           0x0000")
1119 cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001")
1120 cpp_quote("#define DWFAF_HIDDEN           0x0001")
1121
1122     HRESULT AddToolbar(
1123         [in] IUnknown *punkSrc,
1124         [in] LPCWSTR pwszItem,
1125         [in] DWORD dwAddFlags);
1126
1127     HRESULT RemoveToolbar(
1128         [in] IUnknown *punkSrc,
1129         [in] DWORD dwRemoveFlags);
1130
1131     HRESULT FindToolbar(
1132         [in] LPCWSTR pwszItem,
1133         [in] REFIID riid,
1134         [out] LPVOID *ppvObj);
1135 }
1136
1137
1138 /*****************************************************************************
1139  * IDragSourceHelper interface
1140  */
1141 [
1142     object,
1143     uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
1144     pointer_default(unique),
1145     local
1146 ]
1147 interface IDragSourceHelper : IUnknown
1148 {
1149     typedef struct
1150     {
1151         SIZE     sizeDragImage;
1152         POINT    ptOffset;
1153         HBITMAP  hbmpDragImage;
1154         COLORREF crColorKey;
1155     } SHDRAGIMAGE, *LPSHDRAGIMAGE;
1156
1157   HRESULT InitializeFromBitmap(
1158       [in] LPSHDRAGIMAGE pshdi,
1159       [in] IDataObject *pDataObject);
1160
1161   HRESULT InitializeFromWindow(
1162       [in] HWND hwnd,
1163       [in] POINT *ppt,
1164       [in] IDataObject *pDataObject);
1165 }
1166
1167
1168 /*****************************************************************************
1169  * IDropTargetHelper interface
1170  */
1171 [
1172     object,
1173     uuid(4657278b-411b-11d2-839a-00c04fd918d0),
1174     pointer_default(unique),
1175     local
1176 ]
1177 interface IDropTargetHelper : IUnknown
1178 {
1179     HRESULT DragEnter(
1180         [in] HWND hwndTarget,
1181         [in] IDataObject *pDataObject,
1182         [in] POINT *ppt,
1183         [in] DWORD dwEffect);
1184
1185     HRESULT DragLeave();
1186
1187     HRESULT DragOver(
1188         [in] POINT *ppt,
1189         [in] DWORD dwEffect);
1190
1191     HRESULT Drop(
1192         [in] IDataObject *pDataObject,
1193         [in] POINT *ppt,
1194         [in] DWORD dwEffect);
1195
1196     HRESULT Show( [in] BOOL fShow );
1197 }
1198
1199
1200 /*****************************************************************************
1201  * IContextMenu interface
1202  */
1203 [
1204     object,
1205     uuid(000214e4-0000-0000-c000-000000000046),
1206     pointer_default(unique),
1207     local
1208 ]
1209 interface IContextMenu : IUnknown
1210 {
1211 cpp_quote("#define CMF_NORMAL        0x00000000")
1212 cpp_quote("#define CMF_DEFAULTONLY   0x00000001")
1213 cpp_quote("#define CMF_VERBSONLY     0x00000002")
1214 cpp_quote("#define CMF_EXPLORE       0x00000004")
1215 cpp_quote("#define CMF_NOVERBS       0x00000008")
1216 cpp_quote("#define CMF_CANRENAME     0x00000010")
1217 cpp_quote("#define CMF_NODEFAULT     0x00000020")
1218 cpp_quote("#define CMF_INCLUDESTATIC 0x00000040")
1219 cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100")
1220 cpp_quote("#define CMF_RESERVED      0xffff0000")
1221
1222 cpp_quote("#define GCS_VERBA         0x00000000")
1223 cpp_quote("#define GCS_HELPTEXTA     0x00000001")
1224 cpp_quote("#define GCS_VALIDATEA     0x00000002")
1225 cpp_quote("#define GCS_VERBW         0x00000004")
1226 cpp_quote("#define GCS_HELPTEXTW     0x00000005")
1227 cpp_quote("#define GCS_VALIDATEW     0x00000006")
1228 cpp_quote("#define GCS_UNICODE       0x00000004")
1229 cpp_quote("#define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)")
1230 cpp_quote("#define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)")
1231 cpp_quote("#define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)")
1232
1233 cpp_quote("#define CMDSTR_NEWFOLDERA   \"NewFolder\"")
1234 cpp_quote("#define CMDSTR_VIEWLISTA    \"ViewList\"")
1235 cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"")
1236 cpp_quote("#if defined(__GNUC__)")
1237 cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }")
1238 cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }")
1239 cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }")
1240 cpp_quote("#elif defined(_MSC_VER)")
1241 cpp_quote("# define CMDSTR_NEWFOLDERW   L\"NewFolder\"")
1242 cpp_quote("# define CMDSTR_VIEWLISTW    L\"ViewList\"")
1243 cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"")
1244 cpp_quote("#else")
1245 cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};")
1246 cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};")
1247 cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};")
1248 cpp_quote("#endif")
1249 cpp_quote("#define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)")
1250 cpp_quote("#define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)")
1251 cpp_quote("#define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)")
1252
1253 cpp_quote("#define CMIC_MASK_HOTKEY         SEE_MASK_HOTKEY")
1254 cpp_quote("#define CMIC_MASK_ICON           SEE_MASK_ICON")
1255 cpp_quote("#define CMIC_MASK_FLAG_NO_UI     SEE_MASK_FLAG_NO_UI")
1256 cpp_quote("#define CMIC_MASK_UNICODE        SEE_MASK_UNICODE")
1257 cpp_quote("#define CMIC_MASK_NO_CONSOLE     SEE_MASK_NO_CONSOLE")
1258 cpp_quote("#define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME")
1259 cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM")
1260 cpp_quote("#define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE")
1261 cpp_quote("#define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK")
1262 cpp_quote("#define CMIC_MASK_SHIFT_DOWN     0x10000000")
1263 cpp_quote("#define CMIC_MASK_PTINVOKE       0x20000000")
1264 cpp_quote("#define CMIC_MASK_CONTROL_DOWN   0x40000000")
1265 cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE")
1266 cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
1267
1268     typedef IContextMenu *LPCONTEXTMENU;
1269
1270     typedef struct tagCMINVOKECOMMANDINFO
1271     {
1272         DWORD cbSize;
1273         DWORD fMask;
1274         HWND hwnd;
1275         LPCSTR lpVerb;
1276         LPCSTR lpParameters;
1277         LPCSTR lpDirectory;
1278         INT nShow;
1279         DWORD dwHotKey;
1280         HANDLE hIcon;
1281     } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
1282
1283     typedef struct tagCMInvokeCommandInfoEx
1284     {
1285         DWORD cbSize;
1286         DWORD fMask;
1287         HWND hwnd;
1288         LPCSTR lpVerb;
1289         LPCSTR lpParameters;
1290         LPCSTR lpDirectory;
1291         INT nShow;
1292         DWORD dwHotKey;
1293         HANDLE hIcon;
1294         LPCSTR lpTitle;
1295         LPCWSTR lpVerbW;
1296         LPCWSTR lpParametersW;
1297         LPCWSTR lpDirectoryW;
1298         LPCWSTR lpTitleW;
1299         POINT ptInvoke;
1300     } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
1301
1302     HRESULT QueryContextMenu(
1303         [in] HMENU hmenu,
1304         [in] UINT indexMenu,
1305         [in] UINT idCmdFirst,
1306         [in] UINT idCmdLast,
1307         [in] UINT uFlags);
1308
1309     HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
1310
1311     HRESULT GetCommandString(
1312         [in] UINT_PTR idCmd,
1313         [in] UINT uType,
1314         [out] UINT *pwReserved,
1315         [out, size_is(cchMax)] LPSTR pszName,
1316         [in] UINT cchMax);
1317 }
1318
1319
1320 /*****************************************************************************
1321  * IContextMenu2 interface
1322  */
1323 [
1324     object,
1325     uuid(000214f4-0000-0000-c000-000000000046),
1326     pointer_default(unique),
1327     local
1328 ]
1329 interface IContextMenu2 : IContextMenu
1330 {
1331     typedef IContextMenu2 *LPCONTEXTMENU2;
1332
1333     HRESULT HandleMenuMsg(
1334         [in] UINT uMsg,
1335         [in] WPARAM wParam,
1336         [in] LPARAM lParam);
1337 }
1338
1339
1340 /*****************************************************************************
1341  * IContextMenu3 interface
1342  */
1343 [
1344     object,
1345     uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
1346     pointer_default(unique),
1347     local
1348 ]
1349 interface IContextMenu3 : IContextMenu2
1350 {
1351     typedef IContextMenu3 *LPCONTEXTMENU3;
1352
1353     HRESULT HandleMenuMsg2(
1354         [in] UINT uMsg,
1355         [in] WPARAM wParam,
1356         [in] LPARAM lParam,
1357         [out] LRESULT *plResult);
1358 }
1359
1360
1361 /*****************************************************************************
1362  * IShellExecuteHookA interface
1363  */
1364 [
1365     object,
1366     uuid(000214f5-0000-0000-c000-000000000046),
1367     pointer_default(unique),
1368     local
1369 ]
1370 interface IShellExecuteHookA : IUnknown
1371 {
1372     cpp_quote("struct _SHELLEXECUTEINFOA;")
1373     HRESULT Execute(
1374         [in, out] struct _SHELLEXECUTEINFOA* pei);
1375 }
1376
1377
1378 /*****************************************************************************
1379  * IShellExecuteHookW interface
1380  */
1381 [
1382     object,
1383     uuid(000214fb-0000-0000-c000-000000000046),
1384     pointer_default(unique),
1385     local
1386 ]
1387 interface IShellExecuteHookW : IUnknown
1388 {
1389     cpp_quote("struct _SHELLEXECUTEINFOW;")
1390     HRESULT Execute(
1391                 [in, out] struct _SHELLEXECUTEINFOW* pei);
1392 }
1393
1394 /*****************************************************************************
1395  * IShellLinkDataList interface
1396  */
1397 [
1398     object,
1399     uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1),
1400     pointer_default(unique)
1401 ]
1402 interface IShellLinkDataList : IUnknown
1403 {
1404     [local] HRESULT AddDataBlock(
1405                 [in] void *pDataBlock);
1406     [local] HRESULT CopyDataBlock(
1407                 [in] DWORD dwSig,
1408                 [out] void **ppDataBlock);
1409     HRESULT RemoveDataBlock(
1410                 [in] DWORD dwSig);
1411     HRESULT GetFlags(
1412                 [out] DWORD *pdwFlags);
1413     HRESULT SetFlags(
1414                 [in] DWORD dwFlags);
1415 }
1416
1417
1418 /*****************************************************************************
1419  * IResolveShellLink interface
1420  */
1421 [
1422     object,
1423     uuid(5cd52983-9449-11d2-963a-00c04f79adf0),
1424     pointer_default(unique)
1425 ]
1426 interface IResolveShellLink : IUnknown
1427 {
1428     HRESULT ResolveShellLink(
1429                 [in] IUnknown *punk,
1430                 [in] HWND hwnd,
1431                 [in] DWORD fFlags);
1432 }
1433
1434
1435 /*****************************************************************************
1436  * IURLSearchHook interface
1437  */
1438 [
1439     object,
1440     uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
1441     pointer_default(unique),
1442     local
1443 ]
1444 interface IURLSearchHook : IUnknown
1445 {
1446     HRESULT Translate(
1447                 [in, out] LPWSTR lpwszSearchURL,
1448                 [in] DWORD cchBufferSize);
1449 }
1450
1451
1452 /*****************************************************************************
1453  * ISearchContext interface
1454  */
1455 [
1456     object,
1457     uuid(09f656a2-41af-480c-88f7-16cc0d164615),
1458     pointer_default(unique),
1459     local
1460 ]
1461 interface ISearchContext : IUnknown
1462 {
1463     HRESULT GetSearchUrl(
1464                 [in] BSTR *pbstrSearchUrl);
1465     HRESULT GetSearchText(
1466                 [in] BSTR *pbstrSearchText);
1467     HRESULT GetSearchStyle(
1468                 [in] BSTR *pdwSearchStyle);
1469 }
1470
1471
1472 /*****************************************************************************
1473  * IURLSearchHook2 interface
1474  */
1475 [
1476     object,
1477     uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
1478     pointer_default(unique),
1479     local
1480 ]
1481 interface IURLSearchHook2 : IURLSearchHook
1482 {
1483     HRESULT TranslateWithSearchContext(
1484                 [in, out] LPWSTR lpwszSearchURL,
1485                 [in] DWORD cchBufferSize,
1486                 [in] ISearchContext *pSearchContext);
1487 }
1488
1489
1490 cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
1491
1492 /*****************************************************************************
1493  * INewShortcutHookA interface
1494  */
1495 [
1496     object,
1497     uuid(000214e1-0000-0000-c000-000000000046),
1498     pointer_default(unique),
1499     local
1500 ]
1501 interface INewShortcutHookA : IUnknown
1502 {
1503     HRESULT SetReferent(
1504                 [in] LPCSTR pcszReferent,
1505                 [in] HWND hwnd);
1506     HRESULT GetReferent(
1507                 [out] LPSTR pcszReferent,
1508                 [in] int cchReferent);
1509     HRESULT SetFolder(
1510                 [in] LPCSTR pcszReferent);
1511     HRESULT GetFolder(
1512                 [out] LPSTR pcszReferent,
1513                 [in] int cchFolder);
1514     HRESULT GetName(
1515                 [out] LPSTR pszName,
1516                 [in] int cchName);
1517     HRESULT GetExtension(
1518                 [out] LPSTR pszExtension,
1519                 [in] int cchExtension);
1520
1521
1522
1523 /*****************************************************************************
1524  * INewShortcutHookW interface
1525  */
1526 [
1527     object,
1528     uuid(000214f7-0000-0000-c000-000000000046),
1529     pointer_default(unique),
1530     local
1531 ]
1532 interface INewShortcutHookW : IUnknown
1533 {
1534     HRESULT SetReferent(
1535                 [in] LPCWSTR pcszReferent,
1536                 [in] HWND hwnd);
1537     HRESULT GetReferent(
1538                 [out] LPWSTR pcszReferent,
1539                 [in] int cchReferent);
1540     HRESULT SetFolder(
1541                 [in] LPCWSTR pcszReferent);
1542     HRESULT GetFolder(
1543                 [out] LPWSTR pcszReferent,
1544                 [in] int cchFolder);
1545     HRESULT GetName(
1546                 [out] LPWSTR pszName,
1547                 [in] int cchName);
1548     HRESULT GetExtension(
1549                 [out] LPWSTR pszExtension,
1550                 [in] int cchExtension);
1551
1552
1553 /*****************************************************************************
1554  * IRunnableTask interface
1555  */
1556 [
1557     object,
1558     uuid(85788d00-6807-11d0-b810-00c04fd706ec),
1559     pointer_default(unique),
1560     local
1561 ]
1562 interface IRunnableTask : IUnknown
1563 {
1564     HRESULT Run();
1565     HRESULT Kill([in] BOOL fWait);
1566     HRESULT Suspend();
1567     HRESULT Resume();
1568     ULONG IsRunning();
1569 }
1570
1571 /*****************************************************************************
1572  * IShellChangeNotify interface
1573  */
1574 [
1575     object,
1576     uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
1577     pointer_default(unique),
1578     local
1579 ]
1580 interface IShellChangeNotify : IUnknown
1581 {
1582     HRESULT OnChange(
1583                 [in] LONG lEvent,
1584                 [in] LPCITEMIDLIST pidl1,
1585                 [in] LPCITEMIDLIST pidl2);
1586 }
1587
1588 /*****************************************************************************
1589  * IFileSystemBindData interface
1590  */
1591 [
1592     object,
1593     uuid(01e18d10-4d8b-11d2-855d-006008059367),
1594     pointer_default(unique),
1595     local
1596 ]
1597 interface IFileSystemBindData : IUnknown
1598 {
1599     HRESULT SetFindData(
1600                 [in] const WIN32_FIND_DATAW *pfd);
1601     HRESULT GetFindData(
1602                 [out] WIN32_FIND_DATAW *pfd);
1603 }
1604
1605 /*****************************************************************************
1606  *    ITaskbarList interface
1607  */
1608 [
1609     object,
1610     uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
1611     pointer_default(unique)
1612 ]
1613 interface ITaskbarList : IUnknown
1614 {
1615     HRESULT HrInit();
1616
1617     HRESULT AddTab(
1618         [in] HWND hwnd);
1619
1620     HRESULT DeleteTab(
1621         [in] HWND hwnd);
1622
1623     HRESULT ActivateTab(
1624         [in] HWND hwnd);
1625
1626     HRESULT SetActiveAlt(
1627         [in] HWND hwnd);
1628 }
1629
1630 cpp_quote("EXTERN_C const CLSID CLSID_TaskbarList;")
1631
1632 /*****************************************************************************
1633  *    IAutoCompleteDropDown interface
1634  */
1635 [
1636     object,
1637     uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB),
1638     pointer_default(unique)
1639 ]
1640 interface IAutoCompleteDropDown : IUnknown
1641 {
1642 cpp_quote("#define ACDD_VISIBLE   0x0001")
1643
1644     HRESULT GetDropDownStatus(
1645         [out] DWORD *pdwFlags,
1646         [out, string] LPWSTR *ppwszString);
1647
1648     HRESULT ResetEnumerator();
1649 }
1650
1651 [
1652     object,
1653     uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0),
1654     pointer_default(unique)
1655 ]
1656 interface IProfferService : IUnknown
1657 {
1658     HRESULT ProfferService(
1659         [in] REFGUID service,
1660         [in] IServiceProvider *pService,
1661         [out] DWORD *pCookie);
1662
1663     HRESULT RevokeService([in] DWORD cookie);
1664 }
1665
1666 /*****************************************************************************
1667  * IExplorerBrowserEvents interface
1668  */
1669 [
1670  object,
1671  uuid(361BBDC7-E6EE-4E13-BE58-58E2240C810F)
1672 ]
1673 interface IExplorerBrowserEvents : IUnknown
1674 {
1675     HRESULT OnNavigationPending(
1676         [in] PCIDLIST_ABSOLUTE pidlFolder);
1677
1678     HRESULT OnViewCreated(
1679         [in] IShellView *psv);
1680
1681     HRESULT OnNavigationComplete(
1682         [in] PCIDLIST_ABSOLUTE pidlFolder);
1683
1684     HRESULT OnNavigationFailed(
1685         [in] PCIDLIST_ABSOLUTE pidlFolder);
1686 }
1687
1688 typedef GUID EXPLORERPANE;
1689 typedef EXPLORERPANE *REFEXPLORERPANE;
1690
1691 cpp_quote("#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility")
1692
1693 /*****************************************************************************
1694  * IExplorerPaneVisibility interface
1695  */
1696 [
1697  object,
1698  uuid(E07010EC-BC17-44C0-97B0-46C7C95B9EDC)
1699 ]
1700 interface IExplorerPaneVisibility : IUnknown
1701 {
1702     typedef enum tagEXPLORERPANESTATE {
1703         EPS_DONTCARE     = 0x0,
1704         EPS_DEFAULT_ON   = 0x1,
1705         EPS_DEFAULT_OFF  = 0x2,
1706         EPS_STATE_MASK   = 0xffff,
1707         EPS_INITIALSTATE = 0x10000,
1708         EPS_FORCE        = 0x20000
1709     } EXPLORERPANESTATE;
1710
1711     HRESULT GetPaneState(
1712         [in] REFEXPLORERPANE ep,
1713         [out] EXPLORERPANESTATE *peps);
1714 }
1715
1716 typedef [v1_enum] enum tagEXPLORER_BROWSER_FILL_FLAGS {
1717     EBF_NONE                     = 0,
1718     EBF_SELECTFROMDATAOBJECT     = 0x100,
1719     EBF_NODROPTARGET             = 0x200
1720 } EXPLORER_BROWSER_FILL_FLAGS;
1721
1722 typedef [v1_enum] enum tagEXPLORER_BROWSER_OPTIONS {
1723     EBO_NONE               = 0x00,
1724     EBO_NAVIGATEONCE       = 0x01,
1725     EBO_SHOWFRAMES         = 0x02,
1726     EBO_ALWAYSNAVIGATE     = 0x04,
1727     EBO_NOTRAVELLOG        = 0x08,
1728     EBO_NOWRAPPERWINDOW    = 0x10,
1729     EBO_HTMLSHAREPOINTVIEW = 0x20
1730 } EXPLORER_BROWSER_OPTIONS;
1731
1732 cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser")
1733
1734 /*****************************************************************************
1735  * IExplorerBrowser interface
1736  */
1737 [
1738  object,
1739  uuid(DFD3B6B5-C10C-4BE9-85F6-A66969F402F6),
1740  pointer_default(unique)
1741 ]
1742 interface IExplorerBrowser : IUnknown
1743 {
1744
1745     [local] HRESULT Initialize(
1746         [in] HWND hwndParent,
1747         [in] const RECT *prc,
1748         [in, unique] const FOLDERSETTINGS *pfs);
1749
1750     HRESULT Destroy();
1751
1752     [local] HRESULT SetRect(
1753         [in,out,unique] HDWP *phdwp,
1754         [in] RECT rcBrowser);
1755
1756     HRESULT SetPropertyBag(
1757         [in, string] LPCWSTR pszPropertyBag);
1758
1759     HRESULT SetEmptyText(
1760         [in, string] LPCWSTR pszEmptyText);
1761
1762     HRESULT SetFolderSettings(
1763         [in] const FOLDERSETTINGS *pfs);
1764
1765     HRESULT Advise(
1766         [in] IExplorerBrowserEvents *psbe,
1767         [out] DWORD *pdwCookie);
1768
1769     HRESULT Unadvise(
1770         [in] DWORD dwCookie);
1771
1772     HRESULT SetOptions(
1773         [in] EXPLORER_BROWSER_OPTIONS dwFlag);
1774
1775     HRESULT GetOptions(
1776         [out] EXPLORER_BROWSER_OPTIONS *pdwFlag);
1777
1778     HRESULT BrowseToIDList(
1779         [in] PCUIDLIST_RELATIVE pidl,
1780         [in] UINT uFlags);
1781
1782     HRESULT BrowseToObject(
1783         [in] IUnknown *punk,
1784         [in] UINT uFlags);
1785
1786     HRESULT FillFromObject(
1787         [in] IUnknown *punk,
1788         [in] EXPLORER_BROWSER_FILL_FLAGS dwFlags);
1789
1790     HRESULT RemoveAll();
1791
1792     HRESULT GetCurrentView(
1793         [in] REFIID riid,
1794         [out, iid_is(riid)] IUnknown **ppv);
1795 }