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