xref: /reactos/sdk/include/reactos/shlobj_undoc.h (revision ac0bcf4a)
1 /*
2  * ReactOS undocumented shell interface
3  *
4  * Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
5  * Copyright 2013 Dominik Hornung
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  */
21 
22 #ifndef __SHLOBJ_UNDOC__H
23 #define __SHLOBJ_UNDOC__H
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif /* defined(__cplusplus) */
28 
29 typedef struct tagSLOTITEMDATA
30 {
31     DWORD dwFlags;
32     UINT cbData;
33     LPVOID pvData;
34 } SLOTITEMDATA, *PSLOTITEMDATA;
35 
36 typedef INT (CALLBACK *SLOTCOMPARE)(LPCVOID pvData1, LPCVOID pvData2, UINT cbData);
37 
38 /*****************************************************************************
39  * New shellstate structure
40  */
41 struct SHELLSTATE2
42 {
43 	SHELLSTATE								oldState;
44 	long									newState1;
45 	long									newState2;
46 };
47 
48 /*****************************************************************************
49  * Header for persisted view state in cabinet windows
50  */
51 struct persistState
52 {
53 	long									dwSize;
54 	long									browseType;
55 	long									alwaysZero;
56 	long									browserIndex;
57 	CLSID									persistClass;
58 	ULONG									pidlSize;
59 };
60 
61 /*****************************************************************************
62  * CGID_Explorer (IShellBrowser OLECMD IDs)
63  */
64 #define SBCMDID_EXPLORERBARFOLDERS 35 // Query/Toggle
65 #define SBCMDID_MIXEDZONE 39
66 #define SBCMDID_ONVIEWMOVETOTOP 60
67 //SBCMDID_ENABLESHOWTREE ?
68 //SBCMDID_SHOWCONTROL ?
69 //SBCMDID_CANCELNAVIGATION ?
70 //SBCMDID_MAYSAVECHANGES ?
71 //SBCMDID_SETHLINKFRAME ?
72 //SBCMDID_ENABLESTOP ?
73 //SBCMDID_SELECTHISTPIDL ?
74 //SBCMDID_GETPANE ? // This is in the official SDK but only the panes are defined
75 #define PANE_NONE       ((DWORD)-1)
76 #define PANE_ZONE       1
77 #define PANE_OFFLINE    2
78 #define PANE_PRINTER    3
79 #define PANE_SSL        4
80 #define PANE_NAVIGATION 5
81 #define PANE_PROGRESS   6
82 #if (_WIN32_IE >= _WIN32_IE_IE60)
83 #define PANE_PRIVACY    7
84 #endif
85 
86 /*****************************************************************************
87  * IInitializeObject interface
88  */
89 #undef  INTERFACE
90 #define INTERFACE IInitializeObject
91 
92 DECLARE_INTERFACE_(IInitializeObject, IUnknown)//, "4622AD16-FF23-11d0-8D34-00A0C90F2719")
93 {
94     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
95     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
96     STDMETHOD_(ULONG,Release) (THIS) PURE;
97 
98     STDMETHOD(Initialize)(THIS) PURE;
99 };
100 #undef INTERFACE
101 #if !defined(__cplusplus) || defined(CINTERFACE)
102 #define IInitializeObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
103 #define IInitializeObject_AddRef(T) (T)->lpVtbl->AddRef(T)
104 #define IInitializeObject_Release(T) (T)->lpVtbl->Release(T)
105 #define IInitializeObject_Initialize(T) (T)->lpVtbl->Initialize(T)
106 #endif
107 
108 
109 /*****************************************************************************
110  * IBanneredBar interface
111  */
112 enum
113 {
114     BMICON_LARGE = 0,
115     BMICON_SMALL
116 };
117 #define INTERFACE IBanneredBar
118 DECLARE_INTERFACE_(IBanneredBar, IUnknown)//, "596A9A94-013E-11d1-8D34-00A0C90F2719")
119 {
120     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
121     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
122     STDMETHOD_(ULONG,Release) (THIS) PURE;
123 
124     STDMETHOD(SetIconSize)(THIS_ DWORD iIcon) PURE;
125     STDMETHOD(GetIconSize)(THIS_ DWORD* piIcon) PURE;
126     STDMETHOD(SetBitmap)(THIS_ HBITMAP hBitmap) PURE;
127     STDMETHOD(GetBitmap)(THIS_ HBITMAP* phBitmap) PURE;
128 
129 };
130 #undef INTERFACE
131 
132 #if !defined(__cplusplus) || defined(CINTERFACE)
133 #define IBanneredBar_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
134 #define IBanneredBar_AddRef(T) (T)->lpVtbl->AddRef(T)
135 #define IBanneredBar_Release(T) (T)->lpVtbl->Release(T)
136 #define IBanneredBar_SetIconSize(T,a) (T)->lpVtbl->SetIconSize(T,a)
137 #define IBanneredBar_GetIconSize(T,a) (T)->lpVtbl->GetIconSize(T,a)
138 #define IBanneredBar_SetBitmap(T,a) (T)->lpVtbl->SetBitmap(T,a)
139 #define IBanneredBar_GetBitmap(T,a) (T)->lpVtbl->GetBitmap(T,a)
140 #endif
141 
142 /*****************************************************************************
143  * IGlobalFolderSettings interface
144  */
145 struct DEFFOLDERSETTINGS
146 {
147 	long					offset0;
148 };
149 
150 #undef  INTERFACE
151 #define INTERFACE   IGlobalFolderSettings
152 DECLARE_INTERFACE_(IGlobalFolderSettings, IUnknown)
153 {
154     /*** IUnknown ***/
155 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
156 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
157 	STDMETHOD_(ULONG,Release)(THIS) PURE;
158     /*** IGlobalFolderSettings ***/
159 	STDMETHOD(Get)(THIS_ struct DEFFOLDERSETTINGS *buffer, int theSize) PURE;
160 	STDMETHOD(Set)(THIS_ const struct DEFFOLDERSETTINGS *buffer, int theSize, unsigned int param14) PURE;
161 };
162 #undef INTERFACE
163 
164 /*****************************************************************************
165  * IStartMenuCallback interface
166  */
167 #define INTERFACE IStartMenuCallback
168 DECLARE_INTERFACE_(IStartMenuCallback, IOleWindow)
169 {
170     /*** IUnknown ***/
171     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
172     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
173     STDMETHOD_(ULONG,Release)(THIS) PURE;
174     /*** IOleWindow methods ***/
175     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE;
176     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE;
177     /*** IStartMenuCallback ***/
178     STDMETHOD_(HRESULT,Execute)(THIS_ IShellFolder*,LPCITEMIDLIST) PURE;
179     STDMETHOD_(HRESULT,Unknown)(THIS_ PVOID,PVOID,PVOID,PVOID) PURE;
180     STDMETHOD_(HRESULT,AppendMenu)(THIS_ HMENU*) PURE;
181 };
182 #undef INTERFACE
183 
184 #ifdef COBJMACROS
185 #define IStartMenuCallback_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
186 #define IStartMenuCallback_AddRef(T) (T)->lpVtbl->AddRef(T)
187 #define IStartMenuCallback_Release(T) (T)->lpVtbl->Release(T)
188 #define IStartMenuCallback_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
189 #define IStartMenuCallback_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
190 #define IStartMenuCallback_Execute(T,a,b) (T)->lpVtbl->Execute(T,a,b)
191 #define IStartMenuCallback_Unknown(T,a,b,c,d) (T)->lpVtbl->Unknown(T,a,b,c,d)
192 #define IStartMenuCallback_AppendMenu(T,a) (T)->lpVtbl->AppendMenu(T,a)
193 #endif
194 
195 /*****************************************************************************
196  * IBandSiteStreamCallback interface
197  */
198 #define INTERFACE IBandSiteStreamCallback
199 DECLARE_INTERFACE_(IBandSiteStreamCallback, IUnknown)
200 {
201     /*** IUnknown ***/
202     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
203     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
204     STDMETHOD_(ULONG,Release)(THIS) PURE;
205     /*** IBandSiteStreamCallback ***/
206     STDMETHOD_(HRESULT,OnLoad)(THIS_ IStream *pStm, REFIID riid, PVOID *pvObj) PURE;
207     STDMETHOD_(HRESULT,OnSave)(THIS_ IUnknown *pUnk, IStream *pStm) PURE;
208 };
209 #undef INTERFACE
210 
211 #ifdef COBJMACROS
212 #define IBandSiteStreamCallback_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
213 #define IBandSiteStreamCallback_AddRef(T) (T)->lpVtbl->AddRef(T)
214 #define IBandSiteStreamCallback_Release(T) (T)->lpVtbl->Release(T)
215 #define IBandSiteStreamCallback_OnLoad(T,a,b,c) (T)->lpVtbl->OnLoad(T,a,b,c)
216 #define IBandSiteStreamCallback_OnSave(T,a,b) (T)->lpVtbl->OnSave(T,a,b)
217 #endif
218 
219 /*****************************************************************************
220  * IShellDesktopTray interface
221  */
222 #define INTERFACE IShellDesktopTray
223 DECLARE_INTERFACE_(IShellDesktopTray, IUnknown)
224 {
225     /*** IUnknown ***/
226     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
227     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
228     STDMETHOD_(ULONG,Release)(THIS) PURE;
229     /*** IShellDesktopTray ***/
230     STDMETHOD_(ULONG,GetState)(THIS) PURE;
231     STDMETHOD(GetTrayWindow)(THIS_ HWND*) PURE;
232     STDMETHOD(RegisterDesktopWindow)(THIS_ HWND) PURE;
233     STDMETHOD(Unknown)(THIS_ DWORD,DWORD) PURE;
234 };
235 #undef INTERFACE
236 
237 #ifdef COBJMACROS
238 #define IShellDesktopTray_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
239 #define IShellDesktopTray_AddRef(T) (T)->lpVtbl->AddRef(T)
240 #define IShellDesktopTray_Release(T) (T)->lpVtbl->Release(T)
241 #define IShellDesktopTray_GetState(T) (T)->lpVtbl->GetState(T)
242 #define IShellDesktopTray_GetTrayWindow(T,a) (T)->lpVtbl->GetTrayWindow(T,a)
243 #define IShellDesktopTray_RegisterDesktopWindow(T,a) (T)->lpVtbl->RegisterDesktopWindow(T,a)
244 #define IShellDesktopTray_Unknown(T,a,b) (T)->lpVtbl->Unknown(T,a,b)
245 #endif
246 
247 /*****************************************************************************
248  * INscTree interface
249  */
250 #define INTERFACE INscTree
251 DECLARE_INTERFACE_(INscTree, IUnknown)
252 {
253     /*** IUnknown ***/
254 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
255 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
256 	STDMETHOD_(ULONG,Release)(THIS) PURE;
257     /*** INscTree ***/
258 	STDMETHOD(CreateTree)(THIS_ long paramC, long param10, long param14) PURE;
259 	STDMETHOD(Initialize)(THIS_ long paramC, long param10, long param14) PURE;
260 	STDMETHOD(ShowWindow)(THIS_ long paramC) PURE;
261 	STDMETHOD(Refresh)(THIS) PURE;
262 	STDMETHOD(GetSelectedItem)(THIS_ long paramC, long param10) PURE;
263 	STDMETHOD(SetSelectedItem)(THIS_ long paramC, long param10, long param14, long param18) PURE;
264 	STDMETHOD(GetNscMode)(THIS_ long paramC) PURE;
265 	STDMETHOD(SetNscMode)(THIS_ long paramC) PURE;
266 	STDMETHOD(GetSelectedItemName)(THIS_ long paramC, long param10) PURE;
267 	STDMETHOD(BindToSelectedItemParent)(THIS_ long paramC, long param10, long param14) PURE;
268 	STDMETHOD(InLabelEdit)(THIS) PURE;
269 	STDMETHOD(RightPaneNavigationStarted)(THIS_ long paramC) PURE;
270 	STDMETHOD(RightPaneNavigationFinished)(THIS_ long paramC) PURE;
271 };
272 #undef INTERFACE
273 
274 #ifdef COBJMACROS
275 #define INscTree_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
276 #define INscTree_AddRef(T) (T)->lpVtbl->AddRef(T)
277 #define INscTree_Release(T) (T)->lpVtbl->Release(T)
278 #define INscTree_CreateTree(T,a,b,c) (T)->lpVtbl->CreateTree(T,a,b,c)
279 #define INscTree_Initialize(T,a,b,c) (T)->lpVtbl->Initialize(T,a,b,c)
280 #define INscTree_ShowWindow(T,a) (T)->lpVtbl->ShowWindow(T,a)
281 #define INscTree_Refresh(T) (T)->lpVtbl->Refresh(T)
282 #define INscTree_GetSelectedItem(T,a,b) (T)->lpVtbl->GetSelectedItem(T,a,b)
283 #define INscTree_SetSelectedItem(T,a,b,c,d) (T)->lpVtbl->SetSelectedItem(T,a,b,c,d)
284 #define INscTree_GetNscMode(T,a) (T)->lpVtbl->GetNscMode(T,a)
285 #define INscTree_SetNscMode(T,a) (T)->lpVtbl->SetNscMode(T,a)
286 #define INscTree_GetSelectedItemName(T,a,b) (T)->lpVtbl->GetSelectedItemName(T,a,b)
287 #define INscTree_BindToSelectedItemParent(T,a,b,c) (T)->lpVtbl->BindToSelectedItemParent(T,a,b,c)
288 #define INscTree_InLabelEdit(T) (T)->lpVtbl->InLabelEdit(T)
289 #define INscTree_RightPaneNavigationStarted(T,a) (T)->lpVtbl->RightPaneNavigationStarted(T,a)
290 #define INscTree_RightPaneNavigationFinished(T,a) (T)->lpVtbl->RightPaneNavigationFinished(T,a)
291 #endif
292 
293 /*****************************************************************************
294  * INscTree2 interface
295  */
296 #define INTERFACE INscTree2
297 DECLARE_INTERFACE_(INscTree2, INscTree)
298 {
299 	 /*** IUnknown ***/
300 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
301 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
302 	STDMETHOD_(ULONG,Release)(THIS) PURE;
303 	/*** INscTree ***/
304 	STDMETHOD(CreateTree)(THIS_ long paramC, long param10, long param14) PURE;
305 	STDMETHOD(Initialize)(THIS_ long paramC, long param10, long param14) PURE;
306 	STDMETHOD(ShowWindow)(THIS_ long paramC) PURE;
307 	STDMETHOD(Refresh)(THIS) PURE;
308 	STDMETHOD(GetSelectedItem)(THIS_ long paramC, long param10) PURE;
309 	STDMETHOD(SetSelectedItem)(THIS_ long paramC, long param10, long param14, long param18) PURE;
310 	STDMETHOD(GetNscMode)(THIS_ long paramC) PURE;
311 	STDMETHOD(SetNscMode)(THIS_ long paramC) PURE;
312 	STDMETHOD(GetSelectedItemName)(THIS_ long paramC, long param10) PURE;
313 	STDMETHOD(BindToSelectedItemParent)(THIS_ long paramC, long param10, long param14) PURE;
314 	STDMETHOD(InLabelEdit)(THIS) PURE;
315 	STDMETHOD(RightPaneNavigationStarted)(THIS_ long paramC) PURE;
316 	STDMETHOD(RightPaneNavigationFinished)(THIS_ long paramC) PURE;
317 	/*** INscTree2 ***/
318 	STDMETHOD(CreateTree2)(THIS_ long paramC, long param10, long param14, long param18) PURE;
319 };
320 #undef INTERFACE
321 
322 #ifdef COBJMACROS
323 #define INscTree2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
324 #define INscTree2_AddRef(T) (T)->lpVtbl->AddRef(T)
325 #define INscTree2_Release(T) (T)->lpVtbl->Release(T)
326 #define INscTree2_CreateTree(T,a,b,c) (T)->lpVtbl->CreateTree(T,a,b,c)
327 #define INscTree2_Initialize(T,a,b,c) (T)->lpVtbl->Initialize(T,a,b,c)
328 #define INscTree2_ShowWindow(T,a) (T)->lpVtbl->ShowWindow(T,a)
329 #define INscTree2_Refresh(T) (T)->lpVtbl->Refresh(T)
330 #define INscTree2_GetSelectedItem(T,a,b) (T)->lpVtbl->GetSelectedItem(T,a,b)
331 #define INscTree2_SetSelectedItem(T,a,b,c,d) (T)->lpVtbl->SetSelectedItem(T,a,b,c,d)
332 #define INscTree2_GetNscMode(T,a) (T)->lpVtbl->GetNscMode(T,a)
333 #define INscTree2_SetNscMode(T,a) (T)->lpVtbl->SetNscMode(T,a)
334 #define INscTree2_GetSelectedItemName(T,a,b) (T)->lpVtbl->GetSelectedItemName(T,a,b)
335 #define INscTree2_BindToSelectedItemParent(T,a,b,c) (T)->lpVtbl->BindToSelectedItemParent(T,a,b,c)
336 #define INscTree2_InLabelEdit(T) (T)->lpVtbl->InLabelEdit(T)
337 #define INscTree2_RightPaneNavigationStarted(T,a) (T)->lpVtbl->RightPaneNavigationStarted(T,a)
338 #define INscTree2_RightPaneNavigationFinished(T,a) (T)->lpVtbl->RightPaneNavigationFinished(T,a)
339 #define INscTree2_CreateTree2(T,a,b,c,d) (T)->lpVtbl->CreateTree2(T,a,b,c,d)
340 #endif
341 
342 /*****************************************************************************
343  * IAddressEditBox interface
344  */
345 #define INTERFACE IAddressEditBox
346 DECLARE_INTERFACE_(IAddressEditBox, IUnknown)
347 {
348 	 /*** IUnknown ***/
349 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
350 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
351 	STDMETHOD_(ULONG,Release)(THIS) PURE;
352 	 /*** IAddressEditBox ***/
353 	STDMETHOD(Init)(THIS_ HWND comboboxEx, HWND editControl, long param14, IUnknown *param18) PURE;
354 	STDMETHOD(SetCurrentDir)(THIS_ long paramC) PURE;
355 	STDMETHOD(ParseNow)(THIS_ long paramC) PURE;
356 	STDMETHOD(Execute)(THIS_ long paramC) PURE;
357 	STDMETHOD(Save)(THIS_ long paramC) PURE;
358 };
359 #undef INTERFACE
360 
361 #ifdef COBJMACROS
362 #define IAddressEditBox_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
363 #define IAddressEditBox_AddRef(T) (T)->lpVtbl->AddRef(T)
364 #define IAddressEditBox_Release(T) (T)->lpVtbl->Release(T)
365 #define IAddressEditBox_Init(T,a,b,c,d) (T)->lpVtbl->Init(T,a,b,c,d)
366 #define IAddressEditBox_SetCurrentDir(T,a) (T)->lpVtbl->SetCurrentDir(T,a)
367 #define IAddressEditBox_ParseNow(T,a) (T)->lpVtbl->ParseNow(T,a)
368 #define IAddressEditBox_Execute(T,a) (T)->lpVtbl->Execute(T,a)
369 #define IAddressEditBox_Save(T,a) (T)->lpVtbl->Save(T,a)
370 #endif
371 
372 /*****************************************************************************
373  * IBandProxy interface
374  */
375 #define INTERFACE IBandProxy
376 DECLARE_INTERFACE_(IBandProxy, IUnknown)
377 {
378 	 /*** IUnknown ***/
379 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
380 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
381 	STDMETHOD_(ULONG,Release)(THIS) PURE;
382 	 /*** IBandProxy ***/
383 	STDMETHOD(SetSite)(THIS_ IUnknown *paramC) PURE;
384 	STDMETHOD(CreateNewWindow)(THIS_ long paramC) PURE;
385 	STDMETHOD(GetBrowserWindow)(THIS_ IUnknown **paramC) PURE;
386 	STDMETHOD(IsConnected)(THIS) PURE;
387 	STDMETHOD(NavigateToPIDL)(THIS_ LPCITEMIDLIST pidl) PURE;
388 	STDMETHOD(NavigateToURL)(THIS_ long paramC, long param10) PURE;
389 };
390 #undef INTERFACE
391 
392 #ifdef COBJMACROS
393 #define IBandProxy_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
394 #define IBandProxy_AddRef(T) (T)->lpVtbl->AddRef(T)
395 #define IBandProxy_Release(T) (T)->lpVtbl->Release(T)
396 #define IBandProxy_SetSite(T,a) (T)->lpVtbl->SetSite(T,a)
397 #define IBandProxy_CreateNewWindow(T,a) (T)->lpVtbl->CreateNewWindow(T,a)
398 #define IBandProxy_GetBrowserWindow(T,a) (T)->lpVtbl->GetBrowserWindow(T,a)
399 #define IBandProxy_IsConnected(T) (T)->lpVtbl->IsConnected(T)
400 #define IBandProxy_NavigateToPIDL(T,a) (T)->lpVtbl->NavigateToPIDL(T,a)
401 #define IBandProxy_NavigateToURL(T,a,b) (T)->lpVtbl->NavigateToURL(T,a,b)
402 #endif
403 
404 /*****************************************************************************
405  * IExplorerToolbar interface
406  */
407 #define INTERFACE IExplorerToolbar
408 DECLARE_INTERFACE_(IExplorerToolbar, IUnknown)
409 {
410 	 /*** IUnknown ***/
411 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
412 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
413 	STDMETHOD_(ULONG,Release)(THIS) PURE;
414 	 /*** IExplorerToolbar ***/
415 	STDMETHOD(SetCommandTarget)(THIS_ IUnknown *theTarget, GUID *category, long param14) PURE;
416 	STDMETHOD(Unknown1)(THIS) PURE;
417 	STDMETHOD(AddButtons)(THIS_ const GUID *pguidCmdGroup, long buttonCount, TBBUTTON *buttons) PURE;
418 	STDMETHOD(AddString)(THIS_ const GUID *pguidCmdGroup, HINSTANCE param10, LPCTSTR param14, long *param18) PURE;
419 	STDMETHOD(GetButton)(THIS_ const GUID *paramC, long param10, long param14) PURE;
420 	STDMETHOD(GetState)(THIS_ const GUID *pguidCmdGroup, long commandID, long *theState) PURE;
421 	STDMETHOD(SetState)(THIS_ const GUID *pguidCmdGroup, long commandID, long theState) PURE;
422 	STDMETHOD(AddBitmap)(THIS_ const GUID *pguidCmdGroup, long param10, long buttonCount, TBADDBITMAP *lParam, long *newIndex, COLORREF param20) PURE;
423 	STDMETHOD(GetBitmapSize)(THIS_ long *paramC) PURE;
424 	STDMETHOD(SendToolbarMsg)(THIS_ const GUID *pguidCmdGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *result) PURE;
425 	STDMETHOD(SetImageList)(THIS_ const GUID *pguidCmdGroup, HIMAGELIST param10, HIMAGELIST param14, HIMAGELIST param18) PURE;
426 	STDMETHOD(ModifyButton)(THIS_ const GUID *paramC, long param10, long param14) PURE;
427 };
428 #undef INTERFACE
429 
430 #ifdef COBJMACROS
431 #define IExplorerToolbar_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
432 #define IExplorerToolbar_AddRef(T) (T)->lpVtbl->AddRef(T)
433 #define IExplorerToolbar_Release(T) (T)->lpVtbl->Release(T)
434 #define IExplorerToolbar_SetCommandTarget(T,a,b,c) (T)->lpVtbl->SetCommandTarget(T,a,b,c)
435 #define IExplorerToolbar_Unknown1(T) (T)->lpVtbl->Unknown1(T)
436 #define IExplorerToolbar_AddButtons(T,a,b,c) (T)->lpVtbl->AddButtons(T,a,b,c)
437 #define IExplorerToolbar_AddString(T,a,b,c,d) (T)->lpVtbl->AddString(T,a,b,c,d)
438 #define IExplorerToolbar_GetButton(T,a,b,c) (T)->lpVtbl->GetButton(T,a,b,c)
439 #define IExplorerToolbar_GetState(T,a,b,c) (T)->lpVtbl->GetState(T,a,b,c)
440 #define IExplorerToolbar_SetState(T,a,b,c) (T)->lpVtbl->SetState(T,a,b,c)
441 #define IExplorerToolbar_AddBitmap(T,a,b,c,d,e,f) (T)->lpVtbl->AddBitmap(T,a,b,c,d,e,f)
442 #define IExplorerToolbar_GetBitmapSize(T,a) (T)->lpVtbl->GetBitmapSize(T,a)
443 #define IExplorerToolbar_SendToolbarMsg(T,a,b,c,d,e) (T)->lpVtbl->SendToolbarMsg(T,a,b,c,d,e)
444 #define IExplorerToolbar_SetImageList(T,a,b,c,d) (T)->lpVtbl->SetImageList(T,a,b,c,d)
445 #define IExplorerToolbar_ModifyButton(T,a,b,c) (T)->lpVtbl->ModifyButton(T,a,b,c)
446 #endif
447 
448 /*****************************************************************************
449  * IRegTreeOptions interface
450  */
451 typedef enum tagWALK_TREE_CMD
452 {
453 	WALK_TREE_OPTION0 = 0,
454 	WALK_TREE_OPTION1 = 1,
455 	WALK_TREE_OPTION2 = 2,
456 	WALK_TREE_OPTION3 = 3
457 } WALK_TREE_CMD;
458 
459 #define INTERFACE IRegTreeOptions
460 DECLARE_INTERFACE_(IRegTreeOptions, IUnknown)
461 {
462 	 /*** IUnknown ***/
463 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
464 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
465 	STDMETHOD_(ULONG,Release)(THIS) PURE;
466 	 /*** IRegTreeOptions ***/
467 	STDMETHOD(InitTree)(THIS_ HWND paramC, HKEY param10, char const *param14, char const *param18) PURE;
468 	STDMETHOD(WalkTree)(THIS_ WALK_TREE_CMD paramC) PURE;
469 	STDMETHOD(ToggleItem)(THIS_ HTREEITEM paramC) PURE;
470 	STDMETHOD(ShowHelp)(THIS_ HTREEITEM paramC, unsigned long param10) PURE;
471 };
472 #undef INTERFACE
473 
474 #ifdef COBJMACROS
475 #define IRegTreeOptions_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
476 #define IRegTreeOptions_AddRef(T) (T)->lpVtbl->AddRef(T)
477 #define IRegTreeOptions_Release(T) (T)->lpVtbl->Release(T)
478 #define IRegTreeOptions_InitTree(T,a,b,c,d) (T)->lpVtbl->InitTree(T,a,b,c,d)
479 #define IRegTreeOptions_WalkTree(T,a) (T)->lpVtbl->WalkTree(T,a)
480 #define IRegTreeOptions_ToggleItem(T,a) (T)->lpVtbl->ToggleItem(T,a)
481 #define IRegTreeOptions_ShowHelp(T,a,b) (T)->lpVtbl->ShowHelp(T,a,b)
482 #endif
483 
484 /*****************************************************************************
485  * IBandNavigate interface
486  */
487 #define INTERFACE IBandNavigate
488 DECLARE_INTERFACE_(IBandNavigate, IUnknown)
489 {
490 	 /*** IUnknown ***/
491 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
492 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
493 	STDMETHOD_(ULONG,Release)(THIS) PURE;
494 	 /*** IBandNavigate ***/
495 	STDMETHOD(Select)(THIS_ long paramC) PURE;
496 };
497 #undef INTERFACE
498 
499 #ifdef COBJMACROS
500 #define IBandNavigate_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
501 #define IBandNavigate_AddRef(T) (T)->lpVtbl->AddRef(T)
502 #define IBandNavigate_Release(T) (T)->lpVtbl->Release(T)
503 #define IBandNavigate_Select(T,a) (T)->lpVtbl->Select(T,a)
504 #endif
505 
506 /*****************************************************************************
507  * INamespaceProxy interface
508  */
509 #define INTERFACE INamespaceProxy
510 DECLARE_INTERFACE_(INamespaceProxy, IUnknown)
511 {
512 	 /*** IUnknown ***/
513 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
514 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
515 	STDMETHOD_(ULONG,Release)(THIS) PURE;
516 	 /*** INamespaceProxy ***/
517 	STDMETHOD(GetNavigateTarget)(THIS_ long paramC, long param10, long param14) PURE;
518 	STDMETHOD(Invoke)(THIS_ long paramC) PURE;
519 	STDMETHOD(OnSelectionChanged)(THIS_ long paramC) PURE;
520 	STDMETHOD(RefreshFlags)(THIS_ long paramC, long param10, long param14) PURE;
521 	STDMETHOD(CacheItem)(THIS_ long paramC) PURE;
522 };
523 #undef INTERFACE
524 
525 #ifdef COBJMACROS
526 #define INamespaceProxy_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
527 #define INamespaceProxy_AddRef(T) (T)->lpVtbl->AddRef(T)
528 #define INamespaceProxy_Release(T) (T)->lpVtbl->Release(T)
529 #define INamespaceProxy_GetNavigateTarget(T,a,b,c) (T)->lpVtbl->GetNavigateTarget(T,a,b,c)
530 #define INamespaceProxy_Invoke(T,a) (T)->lpVtbl->Invoke(T,a)
531 #define INamespaceProxy_OnSelectionChanged(T,a) (T)->lpVtbl->OnSelectionChanged(T,a)
532 #define INamespaceProxy_RefreshFlags(T,a,b,c) (T)->lpVtbl->RefreshFlags(T,a,b,c)
533 #define INamespaceProxy_CacheItem(T,a) (T)->lpVtbl->CacheItem(T,a)
534 #endif
535 
536 /*****************************************************************************
537  * IShellMenu2 interface
538  */
539 #define INTERFACE IShellMenu2
540 DECLARE_INTERFACE_(IShellMenu2, IShellMenu)
541 {
542 	 /*** IUnknown ***/
543 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
544 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
545 	STDMETHOD_(ULONG,Release)(THIS) PURE;
546 	 /*** IShellMenu ***/
547 	STDMETHOD(Initialize)(THIS_ IShellMenuCallback *psmc, UINT uId, UINT uIdAncestor, DWORD dwFlags) PURE;
548 	STDMETHOD(GetMenuInfo)(THIS_ IShellMenuCallback **ppsmc, UINT *puId, UINT *puIdAncestor, DWORD *pdwFlags) PURE;
549 	STDMETHOD(SetShellFolder)(THIS_ IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags) PURE;
550 	STDMETHOD(GetShellFolder)(THIS_ DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv) PURE;
551 	STDMETHOD(SetMenu)(THIS_ HMENU hmenu, HWND hwnd, DWORD dwFlags) PURE;
552 	STDMETHOD(GetMenu)(THIS_ HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags) PURE;
553 	STDMETHOD(InvalidateItem)(THIS_ LPSMDATA psmd, DWORD dwFlags) PURE;
554 	STDMETHOD(GetState)(THIS_ LPSMDATA psmd) PURE;
555 	STDMETHOD(SetMenuToolbar)(THIS_ IUnknown *punk, DWORD dwFlags) PURE;
556 	 /*** IShellMenu2 ***/
557 	STDMETHOD(GetSubMenu)(THIS) PURE;
558 	STDMETHOD(SetToolbar)(THIS) PURE;
559 	STDMETHOD(SetMinWidth)(THIS) PURE;
560 	STDMETHOD(SetNoBorder)(THIS) PURE;
561 	STDMETHOD(SetTheme)(THIS) PURE;
562 };
563 #undef INTERFACE
564 
565 #ifdef COBJMACROS
566 #define IShellMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
567 #define IShellMenu2_AddRef(T) (T)->lpVtbl->AddRef(T)
568 #define IShellMenu2_Release(T) (T)->lpVtbl->Release(T)
569 #define IShellMenu2_Initialize(T,a,b,c,d) (T)->lpVtbl->Initialize(T,a,b,c,d)
570 #define IShellMenu2_GetMenuInfo(T,a,b,c,d) (T)->lpVtbl->GetMenuInfo(T,a,b,c,d)
571 #define IShellMenu2_SetShellFolder(T,a,b,c,d) (T)->lpVtbl->SetShellFolder(T,a,b,c,d)
572 #define IShellMenu2_GetShellFolder(T,a,b,c,d) (T)->lpVtbl->GetShellFolder(T,a,b,c,d)
573 #define IShellMenu2_SetMenu(T,a,b,c) (T)->lpVtbl->SetMenu(T,a,b,c)
574 #define IShellMenu2_GetMenu(T,a,b,c) (T)->lpVtbl->GetMenu(T,a,b,c)
575 #define IShellMenu2_InvalidateItem(T,a,b) (T)->lpVtbl->InvalidateItem(T,a,b)
576 #define IShellMenu2_GetState(T,a) (T)->lpVtbl->GetState(T,a)
577 #define IShellMenu2_SetMenuToolbar(T,a,b) (T)->lpVtbl->SetMenuToolbar(T,a,b)
578 #define IShellMenu2_GetSubMenu(T) (T)->lpVtbl->GetSubMenu(T)
579 #define IShellMenu2_SetToolbar(T) (T)->lpVtbl->SetToolbar(T)
580 #define IShellMenu2_SetMinWidth(T) (T)->lpVtbl->SetMinWidth(T)
581 #define IShellMenu2_SetNoBorder(T) (T)->lpVtbl->SetNoBorder(T)
582 #define IShellMenu2_SetTheme(T) (T)->lpVtbl->SetTheme(T)
583 #endif
584 
585 /*****************************************************************************
586  * IWinEventHandler interface
587  */
588 #define INTERFACE IWinEventHandler
589 DECLARE_INTERFACE_(IWinEventHandler, IUnknown)
590 {
591 	 /*** IUnknown ***/
592 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
593 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
594 	STDMETHOD_(ULONG,Release)(THIS) PURE;
595 	 /*** IWinEventHandler ***/
596 	STDMETHOD(OnWinEvent)(THIS_ HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) PURE;
597 	STDMETHOD(IsWindowOwner)(THIS_ HWND hWnd) PURE;
598 };
599 #undef INTERFACE
600 
601 #ifdef COBJMACROS
602 #define IWinEventHandler_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
603 #define IWinEventHandler_AddRef(T) (T)->lpVtbl->AddRef(T)
604 #define IWinEventHandler_Release(T) (T)->lpVtbl->Release(T)
605 #define IWinEventHandler_OnWinEvent(T,a,b,c,d,e) (T)->lpVtbl->OnWinEvent(T,a,b,c,d,e)
606 #define IWinEventHandler_IsWindowOwner(T,a) (T)->lpVtbl->IsWindowOwner(T,a)
607 #endif
608 
609 /*****************************************************************************
610  * IAddressBand interface
611  */
612 #define INTERFACE IAddressBand
613 DECLARE_INTERFACE_(IAddressBand, IUnknown)
614 {
615 	 /*** IUnknown ***/
616 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
617 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
618 	STDMETHOD_(ULONG,Release)(THIS) PURE;
619 	 /*** IAddressBand ***/
620 	STDMETHOD(FileSysChange)(THIS_ long param8, long paramC) PURE;
621 	STDMETHOD(Refresh)(THIS_ long param8) PURE;
622 };
623 #undef INTERFACE
624 
625 #ifdef COBJMACROS
626 #define IAddressBand_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
627 #define IAddressBand_AddRef(T) (T)->lpVtbl->AddRef(T)
628 #define IAddressBand_Release(T) (T)->lpVtbl->Release(T)
629 #define IAddressBand_FileSysChange(T,a,b) (T)->lpVtbl->FileSysChange(T,a,b)
630 #define IAddressBand_Refresh(T,a) (T)->lpVtbl->Refresh(T,a)
631 #endif
632 
633 /*****************************************************************************
634  * IShellMenuAcc interface
635  */
636 #define INTERFACE IShellMenuAcc
637 DECLARE_INTERFACE_(IShellMenuAcc, IUnknown)
638 {
639 	 /*** IUnknown ***/
640 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
641 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
642 	STDMETHOD_(ULONG,Release)(THIS) PURE;
643 	 /*** IShellMenuAcc ***/
644 	STDMETHOD(GetTop)(THIS) PURE;
645 	STDMETHOD(GetBottom)(THIS) PURE;
646 	STDMETHOD(GetTracked)(THIS) PURE;
647 	STDMETHOD(GetParentSite)(THIS) PURE;
648 	STDMETHOD(GetState)(THIS) PURE;
649 	STDMETHOD(DoDefaultAction)(THIS) PURE;
650 	STDMETHOD(GetSubMenu)(THIS) PURE;
651 	STDMETHOD(IsEmpty)(THIS) PURE;
652 };
653 #undef INTERFACE
654 
655 #ifdef COBJMACROS
656 #define IShellMenuAcc_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
657 #define IShellMenuAcc_AddRef(T) (T)->lpVtbl->AddRef(T)
658 #define IShellMenuAcc_Release(T) (T)->lpVtbl->Release(T)
659 #define IShellMenuAcc_GetTop(T) (T)->lpVtbl->GetTop(T)
660 #define IShellMenuAcc_GetBottom(T) (T)->lpVtbl->GetBottom(T)
661 #define IShellMenuAcc_GetTracked(T) (T)->lpVtbl->GetTracked(T)
662 #define IShellMenuAcc_GetParentSite(T) (T)->lpVtbl->GetParentSite(T)
663 #define IShellMenuAcc_GetState(T) (T)->lpVtbl->GetState(T)
664 #define IShellMenuAcc_DoDefaultAction(T) (T)->lpVtbl->DoDefaultAction(T)
665 #define IShellMenuAcc_GetSubMenu(T) (T)->lpVtbl->GetSubMenu(T)
666 #define IShellMenuAcc_IsEmpty(T) (T)->lpVtbl->IsEmpty(T)
667 #endif
668 
669 /*****************************************************************************
670  * IAddressBand interface
671  */
672 #define INTERFACE IBandSiteHelper
673 DECLARE_INTERFACE_(IBandSiteHelper, IUnknown)
674 {
675 	 /*** IUnknown ***/
676 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
677 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
678 	STDMETHOD_(ULONG,Release)(THIS) PURE;
679 	 /*** IBandSiteHelper ***/
680 	STDMETHOD(LoadFromStreamBS)(THIS_ IStream *, REFGUID, void **) PURE;
681 	STDMETHOD(SaveToStreamBS)(THIS_ IUnknown *, IStream *) PURE;
682 };
683 #undef INTERFACE
684 
685 #ifdef COBJMACROS
686 #define IBandSiteHelper_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
687 #define IBandSiteHelper_AddRef(T) (T)->lpVtbl->AddRef(T)
688 #define IBandSiteHelper_Release(T) (T)->lpVtbl->Release(T)
689 #define IBandSiteHelper_LoadFromStreamBS(T,a,b) (T)->lpVtbl->LoadFromStreamBS(T,a,b)
690 #define IBandSiteHelper_SaveToStreamBS(T,a,b) (T)->lpVtbl->SaveToStreamBS(T,a,b)
691 #endif
692 
693 /*****************************************************************************
694  * IAddressBand interface
695  */
696 #define INTERFACE IShellBrowserService
697 DECLARE_INTERFACE_(IShellBrowserService, IUnknown)
698 {
699 	 /*** IUnknown ***/
700 	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
701 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
702 	STDMETHOD_(ULONG,Release)(THIS) PURE;
703 	 /*** IShellBrowserService ***/
704 	STDMETHOD(GetPropertyBag)(THIS_ long flags, REFIID riid, void **ppvObject) PURE;
705 };
706 #undef INTERFACE
707 
708 #ifdef COBJMACROS
709 #define IShellBrowserService_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
710 #define IShellBrowserService_AddRef(T) (T)->lpVtbl->AddRef(T)
711 #define IShellBrowserService_Release(T) (T)->lpVtbl->Release(T)
712 #define IShellBrowserService_GetPropertyBag(T,a,b,c) (T)->lpVtbl->GetPropertyBag(T,a,b,c)
713 #endif
714 
715 /*****************************************************************************
716  * IMruDataList interface
717  */
718 #define INTERFACE IMruDataList
719 DECLARE_INTERFACE_(IMruDataList, IUnknown)
720 {
721     /*** IUnknown ***/
722     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
723     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
724     STDMETHOD_(ULONG,Release)(THIS) PURE;
725     /*** IMruDataList ***/
726     STDMETHOD(InitData)(THIS_ UINT, UINT, HKEY, LPCWSTR, SLOTCOMPARE) PURE;
727     STDMETHOD(AddData)(THIS_ LPCVOID , DWORD, UINT*) PURE;
728     STDMETHOD(FindData)(THIS_ LPCVOID , DWORD, UINT*) PURE;
729     STDMETHOD(GetData)(THIS_ UINT, LPVOID, DWORD) PURE;
730     STDMETHOD(QueryInfo)(THIS_ UINT, UINT*, DWORD*) PURE;
731     STDMETHOD(Delete)(THIS_ UINT) PURE;
732 };
733 #undef INTERFACE
734 
735 #ifdef COBJMACROS
736 #define IMruDataList_QueryInterface(T,a,b)  (T)->lpVtbl->QueryInterface(T,a,b)
737 #define IMruDataList_AddRef(T)              (T)->lpVtbl->AddRef(T)
738 #define IMruDataList_Release(T)             (T)->lpVtbl->Release(T)
739 #define IMruDataList_InitData(T,a,b,c,d,e)  (T)->lpVtbl->InitData(T,a,b,c,d,e)
740 #define IMruDataList_AddData(T,a,b,c)       (T)->lpVtbl->AddData(T,a,b,c)
741 #define IMruDataList_FindData(T,a,b,c)      (T)->lpVtbl->FindData(T,a,b,c)
742 #define IMruDataList_GetData(T,a,b,c)       (T)->lpVtbl->GetData(T,a,b,c)
743 #define IMruDataList_QueryInfo(T,a,b,c)     (T)->lpVtbl->QueryInfo(T,a,b,c)
744 #define IMruDataList_Delete(T,a)            (T)->lpVtbl->Delete(T,a)
745 #endif
746 
747 /*****************************************************************************
748  * IMruPidlList interface
749  */
750 #define INTERFACE IMruPidlList
751 DECLARE_INTERFACE_(IMruPidlList, IUnknown)
752 {
753     /*** IUnknown ***/
754     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
755     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
756     STDMETHOD_(ULONG,Release)(THIS) PURE;
757     /*** IMruPidlList ***/
758     STDMETHOD(InitList)(THIS_ UINT, HKEY, LPCWSTR) PURE;
759     STDMETHOD(UsePidl)(THIS_ LPCITEMIDLIST, UINT*) PURE;
760     STDMETHOD(QueryPidl)(THIS_ LPCITEMIDLIST, UINT, UINT*, UINT*) PURE;
761     STDMETHOD(PruneKids)(THIS_ LPCITEMIDLIST) PURE;
762 };
763 #undef INTERFACE
764 
765 #ifdef COBJMACROS
766 #define IMruPidlList_QueryInterface(T,a,b)  (T)->lpVtbl->QueryInterface(T,a,b)
767 #define IMruPidlList_AddRef(T)              (T)->lpVtbl->AddRef(T)
768 #define IMruPidlList_Release(T)             (T)->lpVtbl->Release(T)
769 #define IMruPidlList_InitList(T,a,b,c)      (T)->lpVtbl->InitList(T,a,b,c)
770 #define IMruPidlList_UsePidl(T,a,b)         (T)->lpVtbl->UsePidl(T,a,b)
771 #define IMruPidlList_QueryPidl(T,a,b,c,d)   (T)->lpVtbl->QueryPidl(T,a,b,c,d)
772 #define IMruPidlList_PruneKids(T,a)         (T)->lpVtbl->PruneKids(T,a)
773 #endif
774 
775 /*****************************************************************************
776  * ITrayPriv interface
777  */
778 #define INTERFACE ITrayPriv
779 DECLARE_INTERFACE_(ITrayPriv, IUnknown)
780 {
781     /*** IUnknown ***/
782     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
783     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
784     STDMETHOD_(ULONG,Release)(THIS) PURE;
785     /*** IOleWindow methods ***/
786     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE;
787     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE;
788     /*** ITrayPriv ***/
789     STDMETHOD_(HRESULT,Execute)(THIS_ IShellFolder*,LPCITEMIDLIST) PURE;
790     STDMETHOD_(HRESULT,Unknown)(THIS_ PVOID,PVOID,PVOID,PVOID) PURE;
791     STDMETHOD_(HRESULT,AppendMenu)(THIS_ HMENU*) PURE;
792 };
793 #undef INTERFACE
794 
795 #ifdef COBJMACROS
796 #define ITrayPriv_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
797 #define ITrayPriv_AddRef(T) (T)->lpVtbl->AddRef(T)
798 #define ITrayPriv_Release(T) (T)->lpVtbl->Release(T)
799 #define ITrayPriv_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
800 #define ITrayPriv_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
801 #define ITrayPriv_Execute(T,a,b) (T)->lpVtbl->Execute(T,a,b)
802 #define ITrayPriv_Unknown(T,a,b,c,d) (T)->lpVtbl->Unknown(T,a,b,c,d)
803 #define ITrayPriv_AppendMenu(T,a) (T)->lpVtbl->AppendMenu(T,a)
804 #endif
805 
806 HANDLE WINAPI SHCreateDesktop(IShellDesktopTray*);
807 BOOL WINAPI SHDesktopMessageLoop(HANDLE);
808 HRESULT WINAPI SHCreateFileDataObject(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IDataObject* pDataInner, IDataObject** ppDataObj);
809 
810 #ifdef __cplusplus
811 } /* extern "C" */
812 #endif /* defined(__cplusplus) */
813 
814 #endif // __SHLOBJ_UNDOC__H
815