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