Fix the case of product and company names.
[wine] / include / oleidl.h
1 /*** Autogenerated by WIDL 0.1 from oleidl.idl - Do not edit ***/
2 #include <rpc.h>
3 #include <rpcndr.h>
4
5 #ifndef __WIDL_OLEIDL_H
6 #define __WIDL_OLEIDL_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include <objidl.h>
11 typedef enum tagOLERENDER {
12     OLERENDER_NONE = 0,
13     OLERENDER_DRAW = 1,
14     OLERENDER_FORMAT = 2,
15     OLERENDER_ASIS = 3
16 } OLERENDER, *LPOLERENDER;
17
18 typedef struct tagOBJECTDESCRIPTOR {
19     ULONG cbSize;
20     CLSID clsid;
21     DWORD dwDrawAspect;
22     SIZEL sizel;
23     POINTL pointl;
24     DWORD dwStatus;
25     DWORD dwFullUserTypeName;
26     DWORD dwSrcOfCopy;
27 } OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR, LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR;
28
29 #ifndef __IOleWindow_FWD_DEFINED__
30 #define __IOleWindow_FWD_DEFINED__
31 typedef struct IOleWindow IOleWindow;
32 #endif
33
34 typedef IOleWindow *LPOLEWINDOW;
35
36 /*****************************************************************************
37  * IOleWindow interface
38  */
39 #ifndef __IOleWindow_INTERFACE_DEFINED__
40 #define __IOleWindow_INTERFACE_DEFINED__
41
42 DEFINE_GUID(IID_IOleWindow, 0x00000114, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
43 #if defined(__cplusplus) && !defined(CINTERFACE)
44 struct IOleWindow : public IUnknown
45 {
46     virtual HRESULT STDMETHODCALLTYPE GetWindow(
47         HWND* phwnd) = 0;
48
49     virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(
50         BOOL fEnterMode) = 0;
51
52 };
53 #else
54 typedef struct IOleWindowVtbl IOleWindowVtbl;
55 struct IOleWindow {
56     const IOleWindowVtbl* lpVtbl;
57 };
58 struct IOleWindowVtbl {
59     ICOM_MSVTABLE_COMPAT_FIELDS
60
61     /*** IUnknown methods ***/
62     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
63         IOleWindow* This,
64         REFIID riid,
65         void** ppvObject);
66
67     ULONG (STDMETHODCALLTYPE *AddRef)(
68         IOleWindow* This);
69
70     ULONG (STDMETHODCALLTYPE *Release)(
71         IOleWindow* This);
72
73     /*** IOleWindow methods ***/
74     HRESULT (STDMETHODCALLTYPE *GetWindow)(
75         IOleWindow* This,
76         HWND* phwnd);
77
78     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
79         IOleWindow* This,
80         BOOL fEnterMode);
81
82 };
83
84 /*** IUnknown methods ***/
85 #define IOleWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
86 #define IOleWindow_AddRef(p) (p)->lpVtbl->AddRef(p)
87 #define IOleWindow_Release(p) (p)->lpVtbl->Release(p)
88 /*** IOleWindow methods ***/
89 #define IOleWindow_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
90 #define IOleWindow_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
91
92 #endif
93
94 #define IOleWindow_METHODS \
95     ICOM_MSVTABLE_COMPAT_FIELDS \
96     /*** IUnknown methods ***/ \
97     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
98     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
99     STDMETHOD_(ULONG,Release)(THIS) PURE; \
100     /*** IOleWindow methods ***/ \
101     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
102     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE;
103
104 HRESULT CALLBACK IOleWindow_GetWindow_Proxy(
105     IOleWindow* This,
106     HWND* phwnd);
107 void __RPC_STUB IOleWindow_GetWindow_Stub(
108     struct IRpcStubBuffer* This,
109     struct IRpcChannelBuffer* pRpcChannelBuffer,
110     PRPC_MESSAGE pRpcMessage,
111     DWORD* pdwStubPhase);
112 HRESULT CALLBACK IOleWindow_ContextSensitiveHelp_Proxy(
113     IOleWindow* This,
114     BOOL fEnterMode);
115 void __RPC_STUB IOleWindow_ContextSensitiveHelp_Stub(
116     struct IRpcStubBuffer* This,
117     struct IRpcChannelBuffer* pRpcChannelBuffer,
118     PRPC_MESSAGE pRpcMessage,
119     DWORD* pdwStubPhase);
120
121 #endif  /* __IOleWindow_INTERFACE_DEFINED__ */
122
123 #ifndef __IOleInPlaceObject_FWD_DEFINED__
124 #define __IOleInPlaceObject_FWD_DEFINED__
125 typedef struct IOleInPlaceObject IOleInPlaceObject;
126 #endif
127
128 typedef IOleInPlaceObject *LPOLEINPLACEOBJECT;
129
130 /*****************************************************************************
131  * IOleInPlaceObject interface
132  */
133 #ifndef __IOleInPlaceObject_INTERFACE_DEFINED__
134 #define __IOleInPlaceObject_INTERFACE_DEFINED__
135
136 DEFINE_GUID(IID_IOleInPlaceObject, 0x00000113, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
137 #if defined(__cplusplus) && !defined(CINTERFACE)
138 struct IOleInPlaceObject : public IOleWindow
139 {
140     virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate(
141         ) = 0;
142
143     virtual HRESULT STDMETHODCALLTYPE UIDeactivate(
144         ) = 0;
145
146     virtual HRESULT STDMETHODCALLTYPE SetObjectRects(
147         LPCRECT lprcPosRect,
148         LPCRECT lprcClipRect) = 0;
149
150     virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo(
151         ) = 0;
152
153 };
154 #else
155 typedef struct IOleInPlaceObjectVtbl IOleInPlaceObjectVtbl;
156 struct IOleInPlaceObject {
157     const IOleInPlaceObjectVtbl* lpVtbl;
158 };
159 struct IOleInPlaceObjectVtbl {
160     ICOM_MSVTABLE_COMPAT_FIELDS
161
162     /*** IUnknown methods ***/
163     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
164         IOleInPlaceObject* This,
165         REFIID riid,
166         void** ppvObject);
167
168     ULONG (STDMETHODCALLTYPE *AddRef)(
169         IOleInPlaceObject* This);
170
171     ULONG (STDMETHODCALLTYPE *Release)(
172         IOleInPlaceObject* This);
173
174     /*** IOleWindow methods ***/
175     HRESULT (STDMETHODCALLTYPE *GetWindow)(
176         IOleInPlaceObject* This,
177         HWND* phwnd);
178
179     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
180         IOleInPlaceObject* This,
181         BOOL fEnterMode);
182
183     /*** IOleInPlaceObject methods ***/
184     HRESULT (STDMETHODCALLTYPE *InPlaceDeactivate)(
185         IOleInPlaceObject* This);
186
187     HRESULT (STDMETHODCALLTYPE *UIDeactivate)(
188         IOleInPlaceObject* This);
189
190     HRESULT (STDMETHODCALLTYPE *SetObjectRects)(
191         IOleInPlaceObject* This,
192         LPCRECT lprcPosRect,
193         LPCRECT lprcClipRect);
194
195     HRESULT (STDMETHODCALLTYPE *ReactivateAndUndo)(
196         IOleInPlaceObject* This);
197
198 };
199
200 /*** IUnknown methods ***/
201 #define IOleInPlaceObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
202 #define IOleInPlaceObject_AddRef(p) (p)->lpVtbl->AddRef(p)
203 #define IOleInPlaceObject_Release(p) (p)->lpVtbl->Release(p)
204 /*** IOleWindow methods ***/
205 #define IOleInPlaceObject_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
206 #define IOleInPlaceObject_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
207 /*** IOleInPlaceObject methods ***/
208 #define IOleInPlaceObject_InPlaceDeactivate(p) (p)->lpVtbl->InPlaceDeactivate(p)
209 #define IOleInPlaceObject_UIDeactivate(p) (p)->lpVtbl->UIDeactivate(p)
210 #define IOleInPlaceObject_SetObjectRects(p,a,b) (p)->lpVtbl->SetObjectRects(p,a,b)
211 #define IOleInPlaceObject_ReactivateAndUndo(p) (p)->lpVtbl->ReactivateAndUndo(p)
212
213 #endif
214
215 #define IOleInPlaceObject_METHODS \
216     ICOM_MSVTABLE_COMPAT_FIELDS \
217     /*** IUnknown methods ***/ \
218     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
219     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
220     STDMETHOD_(ULONG,Release)(THIS) PURE; \
221     /*** IOleWindow methods ***/ \
222     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
223     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
224     /*** IOleInPlaceObject methods ***/ \
225     STDMETHOD_(HRESULT,InPlaceDeactivate)(THIS) PURE; \
226     STDMETHOD_(HRESULT,UIDeactivate)(THIS) PURE; \
227     STDMETHOD_(HRESULT,SetObjectRects)(THIS_ LPCRECT lprcPosRect, LPCRECT lprcClipRect) PURE; \
228     STDMETHOD_(HRESULT,ReactivateAndUndo)(THIS) PURE;
229
230 HRESULT CALLBACK IOleInPlaceObject_InPlaceDeactivate_Proxy(
231     IOleInPlaceObject* This);
232 void __RPC_STUB IOleInPlaceObject_InPlaceDeactivate_Stub(
233     struct IRpcStubBuffer* This,
234     struct IRpcChannelBuffer* pRpcChannelBuffer,
235     PRPC_MESSAGE pRpcMessage,
236     DWORD* pdwStubPhase);
237 HRESULT CALLBACK IOleInPlaceObject_UIDeactivate_Proxy(
238     IOleInPlaceObject* This);
239 void __RPC_STUB IOleInPlaceObject_UIDeactivate_Stub(
240     struct IRpcStubBuffer* This,
241     struct IRpcChannelBuffer* pRpcChannelBuffer,
242     PRPC_MESSAGE pRpcMessage,
243     DWORD* pdwStubPhase);
244 HRESULT CALLBACK IOleInPlaceObject_SetObjectRects_Proxy(
245     IOleInPlaceObject* This,
246     LPCRECT lprcPosRect,
247     LPCRECT lprcClipRect);
248 void __RPC_STUB IOleInPlaceObject_SetObjectRects_Stub(
249     struct IRpcStubBuffer* This,
250     struct IRpcChannelBuffer* pRpcChannelBuffer,
251     PRPC_MESSAGE pRpcMessage,
252     DWORD* pdwStubPhase);
253 HRESULT CALLBACK IOleInPlaceObject_ReactivateAndUndo_Proxy(
254     IOleInPlaceObject* This);
255 void __RPC_STUB IOleInPlaceObject_ReactivateAndUndo_Stub(
256     struct IRpcStubBuffer* This,
257     struct IRpcChannelBuffer* pRpcChannelBuffer,
258     PRPC_MESSAGE pRpcMessage,
259     DWORD* pdwStubPhase);
260
261 #endif  /* __IOleInPlaceObject_INTERFACE_DEFINED__ */
262
263 #ifndef __IOleInPlaceUIWindow_FWD_DEFINED__
264 #define __IOleInPlaceUIWindow_FWD_DEFINED__
265 typedef struct IOleInPlaceUIWindow IOleInPlaceUIWindow;
266 #endif
267
268 #ifndef __IOleInPlaceActiveObject_FWD_DEFINED__
269 #define __IOleInPlaceActiveObject_FWD_DEFINED__
270 typedef struct IOleInPlaceActiveObject IOleInPlaceActiveObject;
271 #endif
272
273 typedef IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
274
275 struct tagMSG;
276 /*****************************************************************************
277  * IOleInPlaceActiveObject interface
278  */
279 #ifndef __IOleInPlaceActiveObject_INTERFACE_DEFINED__
280 #define __IOleInPlaceActiveObject_INTERFACE_DEFINED__
281
282 DEFINE_GUID(IID_IOleInPlaceActiveObject, 0x00000117, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
283 #if defined(__cplusplus) && !defined(CINTERFACE)
284 struct IOleInPlaceActiveObject : public IOleWindow
285 {
286     virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
287         struct tagMSG {
288             HWND hwnd;
289             UINT message;
290             WPARAM wParam;
291             LPARAM lParam;
292             DWORD time;
293             POINT pt;
294         }* lpmsg) = 0;
295
296     virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(
297         BOOL fActivate) = 0;
298
299     virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(
300         BOOL fActivate) = 0;
301
302     virtual HRESULT STDMETHODCALLTYPE ResizeBorder(
303         LPCRECT prcBorder,
304         IOleInPlaceUIWindow* pUIWindow,
305         BOOL fFrameWindow) = 0;
306
307     virtual HRESULT STDMETHODCALLTYPE EnableModeless(
308         BOOL fEnable) = 0;
309
310 };
311 #else
312 typedef struct IOleInPlaceActiveObjectVtbl IOleInPlaceActiveObjectVtbl;
313 struct IOleInPlaceActiveObject {
314     const IOleInPlaceActiveObjectVtbl* lpVtbl;
315 };
316 struct IOleInPlaceActiveObjectVtbl {
317     ICOM_MSVTABLE_COMPAT_FIELDS
318
319     /*** IUnknown methods ***/
320     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
321         IOleInPlaceActiveObject* This,
322         REFIID riid,
323         void** ppvObject);
324
325     ULONG (STDMETHODCALLTYPE *AddRef)(
326         IOleInPlaceActiveObject* This);
327
328     ULONG (STDMETHODCALLTYPE *Release)(
329         IOleInPlaceActiveObject* This);
330
331     /*** IOleWindow methods ***/
332     HRESULT (STDMETHODCALLTYPE *GetWindow)(
333         IOleInPlaceActiveObject* This,
334         HWND* phwnd);
335
336     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
337         IOleInPlaceActiveObject* This,
338         BOOL fEnterMode);
339
340     /*** IOleInPlaceActiveObject methods ***/
341     HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
342         IOleInPlaceActiveObject* This,
343         struct tagMSG* lpmsg);
344
345     HRESULT (STDMETHODCALLTYPE *OnFrameWindowActivate)(
346         IOleInPlaceActiveObject* This,
347         BOOL fActivate);
348
349     HRESULT (STDMETHODCALLTYPE *OnDocWindowActivate)(
350         IOleInPlaceActiveObject* This,
351         BOOL fActivate);
352
353     HRESULT (STDMETHODCALLTYPE *ResizeBorder)(
354         IOleInPlaceActiveObject* This,
355         LPCRECT prcBorder,
356         IOleInPlaceUIWindow* pUIWindow,
357         BOOL fFrameWindow);
358
359     HRESULT (STDMETHODCALLTYPE *EnableModeless)(
360         IOleInPlaceActiveObject* This,
361         BOOL fEnable);
362
363 };
364
365 /*** IUnknown methods ***/
366 #define IOleInPlaceActiveObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
367 #define IOleInPlaceActiveObject_AddRef(p) (p)->lpVtbl->AddRef(p)
368 #define IOleInPlaceActiveObject_Release(p) (p)->lpVtbl->Release(p)
369 /*** IOleWindow methods ***/
370 #define IOleInPlaceActiveObject_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
371 #define IOleInPlaceActiveObject_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
372 /*** IOleInPlaceActiveObject methods ***/
373 #define IOleInPlaceActiveObject_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a)
374 #define IOleInPlaceActiveObject_OnFrameWindowActivate(p,a) (p)->lpVtbl->OnFrameWindowActivate(p,a)
375 #define IOleInPlaceActiveObject_OnDocWindowActivate(p,a) (p)->lpVtbl->OnDocWindowActivate(p,a)
376 #define IOleInPlaceActiveObject_ResizeBorder(p,a,b,c) (p)->lpVtbl->ResizeBorder(p,a,b,c)
377 #define IOleInPlaceActiveObject_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a)
378
379 #endif
380
381 #define IOleInPlaceActiveObject_METHODS \
382     ICOM_MSVTABLE_COMPAT_FIELDS \
383     /*** IUnknown methods ***/ \
384     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
385     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
386     STDMETHOD_(ULONG,Release)(THIS) PURE; \
387     /*** IOleWindow methods ***/ \
388     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
389     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
390     /*** IOleInPlaceActiveObject methods ***/ \
391     STDMETHOD_(HRESULT,TranslateAccelerator)(THIS_ struct tagMSG* lpmsg) PURE; \
392     STDMETHOD_(HRESULT,OnFrameWindowActivate)(THIS_ BOOL fActivate) PURE; \
393     STDMETHOD_(HRESULT,OnDocWindowActivate)(THIS_ BOOL fActivate) PURE; \
394     STDMETHOD_(HRESULT,ResizeBorder)(THIS_ LPCRECT prcBorder, IOleInPlaceUIWindow* pUIWindow, BOOL fFrameWindow) PURE; \
395     STDMETHOD_(HRESULT,EnableModeless)(THIS_ BOOL fEnable) PURE;
396
397 HRESULT CALLBACK IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy(
398     IOleInPlaceActiveObject* This);
399 void __RPC_STUB IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub(
400     struct IRpcStubBuffer* This,
401     struct IRpcChannelBuffer* pRpcChannelBuffer,
402     PRPC_MESSAGE pRpcMessage,
403     DWORD* pdwStubPhase);
404 HRESULT CALLBACK IOleInPlaceActiveObject_TranslateAccelerator_Proxy(
405     IOleInPlaceActiveObject* This,
406     struct tagMSG* lpmsg);
407 HRESULT __RPC_STUB IOleInPlaceActiveObject_TranslateAccelerator_Stub(
408     IOleInPlaceActiveObject* This);
409 HRESULT CALLBACK IOleInPlaceActiveObject_OnFrameWindowActivate_Proxy(
410     IOleInPlaceActiveObject* This,
411     BOOL fActivate);
412 void __RPC_STUB IOleInPlaceActiveObject_OnFrameWindowActivate_Stub(
413     struct IRpcStubBuffer* This,
414     struct IRpcChannelBuffer* pRpcChannelBuffer,
415     PRPC_MESSAGE pRpcMessage,
416     DWORD* pdwStubPhase);
417 HRESULT CALLBACK IOleInPlaceActiveObject_OnDocWindowActivate_Proxy(
418     IOleInPlaceActiveObject* This,
419     BOOL fActivate);
420 void __RPC_STUB IOleInPlaceActiveObject_OnDocWindowActivate_Stub(
421     struct IRpcStubBuffer* This,
422     struct IRpcChannelBuffer* pRpcChannelBuffer,
423     PRPC_MESSAGE pRpcMessage,
424     DWORD* pdwStubPhase);
425 HRESULT CALLBACK IOleInPlaceActiveObject_RemoteResizeBorder_Proxy(
426     IOleInPlaceActiveObject* This,
427     LPCRECT prcBorder,
428     REFIID riid,
429     IOleInPlaceUIWindow* pUIWindow,
430     BOOL fFrameWindow);
431 void __RPC_STUB IOleInPlaceActiveObject_RemoteResizeBorder_Stub(
432     struct IRpcStubBuffer* This,
433     struct IRpcChannelBuffer* pRpcChannelBuffer,
434     PRPC_MESSAGE pRpcMessage,
435     DWORD* pdwStubPhase);
436 HRESULT CALLBACK IOleInPlaceActiveObject_ResizeBorder_Proxy(
437     IOleInPlaceActiveObject* This,
438     LPCRECT prcBorder,
439     IOleInPlaceUIWindow* pUIWindow,
440     BOOL fFrameWindow);
441 HRESULT __RPC_STUB IOleInPlaceActiveObject_ResizeBorder_Stub(
442     IOleInPlaceActiveObject* This,
443     LPCRECT prcBorder,
444     REFIID riid,
445     IOleInPlaceUIWindow* pUIWindow,
446     BOOL fFrameWindow);
447 HRESULT CALLBACK IOleInPlaceActiveObject_EnableModeless_Proxy(
448     IOleInPlaceActiveObject* This,
449     BOOL fEnable);
450 void __RPC_STUB IOleInPlaceActiveObject_EnableModeless_Stub(
451     struct IRpcStubBuffer* This,
452     struct IRpcChannelBuffer* pRpcChannelBuffer,
453     PRPC_MESSAGE pRpcMessage,
454     DWORD* pdwStubPhase);
455
456 #endif  /* __IOleInPlaceActiveObject_INTERFACE_DEFINED__ */
457
458 typedef IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
459
460 typedef RECT BORDERWIDTHS;
461
462 typedef LPRECT LPBORDERWIDTHS;
463
464 typedef LPCRECT LPCBORDERWIDTHS;
465
466 /*****************************************************************************
467  * IOleInPlaceUIWindow interface
468  */
469 #ifndef __IOleInPlaceUIWindow_INTERFACE_DEFINED__
470 #define __IOleInPlaceUIWindow_INTERFACE_DEFINED__
471
472 DEFINE_GUID(IID_IOleInPlaceUIWindow, 0x00000115, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
473 #if defined(__cplusplus) && !defined(CINTERFACE)
474 struct IOleInPlaceUIWindow : public IOleWindow
475 {
476     virtual HRESULT STDMETHODCALLTYPE GetBorder(
477         LPRECT lprectBorder) = 0;
478
479     virtual HRESULT STDMETHODCALLTYPE RequestBorderSpace(
480         LPCBORDERWIDTHS pborderwidths) = 0;
481
482     virtual HRESULT STDMETHODCALLTYPE SetBorderSpace(
483         LPCBORDERWIDTHS pborderwidths) = 0;
484
485     virtual HRESULT STDMETHODCALLTYPE SetActiveObject(
486         IOleInPlaceActiveObject* pActiveObject,
487         LPCOLESTR pszObjName) = 0;
488
489 };
490 #else
491 typedef struct IOleInPlaceUIWindowVtbl IOleInPlaceUIWindowVtbl;
492 struct IOleInPlaceUIWindow {
493     const IOleInPlaceUIWindowVtbl* lpVtbl;
494 };
495 struct IOleInPlaceUIWindowVtbl {
496     ICOM_MSVTABLE_COMPAT_FIELDS
497
498     /*** IUnknown methods ***/
499     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
500         IOleInPlaceUIWindow* This,
501         REFIID riid,
502         void** ppvObject);
503
504     ULONG (STDMETHODCALLTYPE *AddRef)(
505         IOleInPlaceUIWindow* This);
506
507     ULONG (STDMETHODCALLTYPE *Release)(
508         IOleInPlaceUIWindow* This);
509
510     /*** IOleWindow methods ***/
511     HRESULT (STDMETHODCALLTYPE *GetWindow)(
512         IOleInPlaceUIWindow* This,
513         HWND* phwnd);
514
515     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
516         IOleInPlaceUIWindow* This,
517         BOOL fEnterMode);
518
519     /*** IOleInPlaceUIWindow methods ***/
520     HRESULT (STDMETHODCALLTYPE *GetBorder)(
521         IOleInPlaceUIWindow* This,
522         LPRECT lprectBorder);
523
524     HRESULT (STDMETHODCALLTYPE *RequestBorderSpace)(
525         IOleInPlaceUIWindow* This,
526         LPCBORDERWIDTHS pborderwidths);
527
528     HRESULT (STDMETHODCALLTYPE *SetBorderSpace)(
529         IOleInPlaceUIWindow* This,
530         LPCBORDERWIDTHS pborderwidths);
531
532     HRESULT (STDMETHODCALLTYPE *SetActiveObject)(
533         IOleInPlaceUIWindow* This,
534         IOleInPlaceActiveObject* pActiveObject,
535         LPCOLESTR pszObjName);
536
537 };
538
539 /*** IUnknown methods ***/
540 #define IOleInPlaceUIWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
541 #define IOleInPlaceUIWindow_AddRef(p) (p)->lpVtbl->AddRef(p)
542 #define IOleInPlaceUIWindow_Release(p) (p)->lpVtbl->Release(p)
543 /*** IOleWindow methods ***/
544 #define IOleInPlaceUIWindow_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
545 #define IOleInPlaceUIWindow_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
546 /*** IOleInPlaceUIWindow methods ***/
547 #define IOleInPlaceUIWindow_GetBorder(p,a) (p)->lpVtbl->GetBorder(p,a)
548 #define IOleInPlaceUIWindow_RequestBorderSpace(p,a) (p)->lpVtbl->RequestBorderSpace(p,a)
549 #define IOleInPlaceUIWindow_SetBorderSpace(p,a) (p)->lpVtbl->SetBorderSpace(p,a)
550 #define IOleInPlaceUIWindow_SetActiveObject(p,a,b) (p)->lpVtbl->SetActiveObject(p,a,b)
551
552 #endif
553
554 #define IOleInPlaceUIWindow_METHODS \
555     ICOM_MSVTABLE_COMPAT_FIELDS \
556     /*** IUnknown methods ***/ \
557     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
558     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
559     STDMETHOD_(ULONG,Release)(THIS) PURE; \
560     /*** IOleWindow methods ***/ \
561     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
562     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
563     /*** IOleInPlaceUIWindow methods ***/ \
564     STDMETHOD_(HRESULT,GetBorder)(THIS_ LPRECT lprectBorder) PURE; \
565     STDMETHOD_(HRESULT,RequestBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
566     STDMETHOD_(HRESULT,SetBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
567     STDMETHOD_(HRESULT,SetActiveObject)(THIS_ IOleInPlaceActiveObject* pActiveObject, LPCOLESTR pszObjName) PURE;
568
569 HRESULT CALLBACK IOleInPlaceUIWindow_GetBorder_Proxy(
570     IOleInPlaceUIWindow* This,
571     LPRECT lprectBorder);
572 void __RPC_STUB IOleInPlaceUIWindow_GetBorder_Stub(
573     struct IRpcStubBuffer* This,
574     struct IRpcChannelBuffer* pRpcChannelBuffer,
575     PRPC_MESSAGE pRpcMessage,
576     DWORD* pdwStubPhase);
577 HRESULT CALLBACK IOleInPlaceUIWindow_RequestBorderSpace_Proxy(
578     IOleInPlaceUIWindow* This,
579     LPCBORDERWIDTHS pborderwidths);
580 void __RPC_STUB IOleInPlaceUIWindow_RequestBorderSpace_Stub(
581     struct IRpcStubBuffer* This,
582     struct IRpcChannelBuffer* pRpcChannelBuffer,
583     PRPC_MESSAGE pRpcMessage,
584     DWORD* pdwStubPhase);
585 HRESULT CALLBACK IOleInPlaceUIWindow_SetBorderSpace_Proxy(
586     IOleInPlaceUIWindow* This,
587     LPCBORDERWIDTHS pborderwidths);
588 void __RPC_STUB IOleInPlaceUIWindow_SetBorderSpace_Stub(
589     struct IRpcStubBuffer* This,
590     struct IRpcChannelBuffer* pRpcChannelBuffer,
591     PRPC_MESSAGE pRpcMessage,
592     DWORD* pdwStubPhase);
593 HRESULT CALLBACK IOleInPlaceUIWindow_SetActiveObject_Proxy(
594     IOleInPlaceUIWindow* This,
595     IOleInPlaceActiveObject* pActiveObject,
596     LPCOLESTR pszObjName);
597 void __RPC_STUB IOleInPlaceUIWindow_SetActiveObject_Stub(
598     struct IRpcStubBuffer* This,
599     struct IRpcChannelBuffer* pRpcChannelBuffer,
600     PRPC_MESSAGE pRpcMessage,
601     DWORD* pdwStubPhase);
602
603 #endif  /* __IOleInPlaceUIWindow_INTERFACE_DEFINED__ */
604
605 #ifndef __IOleInPlaceFrame_FWD_DEFINED__
606 #define __IOleInPlaceFrame_FWD_DEFINED__
607 typedef struct IOleInPlaceFrame IOleInPlaceFrame;
608 #endif
609
610 typedef IOleInPlaceFrame *LPOLEINPLACEFRAME;
611
612 typedef struct tagOleInPlaceFrameInfo {
613     UINT cb;
614     BOOL fMDIApp;
615     HWND hwndFrame;
616     HACCEL haccel;
617     UINT cAccelEntries;
618 } OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
619
620 typedef struct tagOleMenuGroupWidths {
621     LONG width[6];
622 } OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
623
624 typedef HGLOBAL HOLEMENU;
625
626 /*****************************************************************************
627  * IOleInPlaceFrame interface
628  */
629 #ifndef __IOleInPlaceFrame_INTERFACE_DEFINED__
630 #define __IOleInPlaceFrame_INTERFACE_DEFINED__
631
632 DEFINE_GUID(IID_IOleInPlaceFrame, 0x00000116, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
633 #if defined(__cplusplus) && !defined(CINTERFACE)
634 struct IOleInPlaceFrame : public IOleInPlaceUIWindow
635 {
636     virtual HRESULT STDMETHODCALLTYPE InsertMenus(
637         HMENU hmenuShared,
638         LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;
639
640     virtual HRESULT STDMETHODCALLTYPE SetMenu(
641         HMENU hmenuShared,
642         HOLEMENU holemenu,
643         HWND hwndActiveObject) = 0;
644
645     virtual HRESULT STDMETHODCALLTYPE RemoveMenus(
646         HMENU hmenuShared) = 0;
647
648     virtual HRESULT STDMETHODCALLTYPE SetStatusText(
649         LPCOLESTR pszStatusText) = 0;
650
651     virtual HRESULT STDMETHODCALLTYPE EnableModeless(
652         BOOL fEnable) = 0;
653
654     virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
655         struct tagMSG* lpmsg,
656         WORD wID) = 0;
657
658 };
659 #else
660 typedef struct IOleInPlaceFrameVtbl IOleInPlaceFrameVtbl;
661 struct IOleInPlaceFrame {
662     const IOleInPlaceFrameVtbl* lpVtbl;
663 };
664 struct IOleInPlaceFrameVtbl {
665     ICOM_MSVTABLE_COMPAT_FIELDS
666
667     /*** IUnknown methods ***/
668     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
669         IOleInPlaceFrame* This,
670         REFIID riid,
671         void** ppvObject);
672
673     ULONG (STDMETHODCALLTYPE *AddRef)(
674         IOleInPlaceFrame* This);
675
676     ULONG (STDMETHODCALLTYPE *Release)(
677         IOleInPlaceFrame* This);
678
679     /*** IOleWindow methods ***/
680     HRESULT (STDMETHODCALLTYPE *GetWindow)(
681         IOleInPlaceFrame* This,
682         HWND* phwnd);
683
684     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
685         IOleInPlaceFrame* This,
686         BOOL fEnterMode);
687
688     /*** IOleInPlaceUIWindow methods ***/
689     HRESULT (STDMETHODCALLTYPE *GetBorder)(
690         IOleInPlaceFrame* This,
691         LPRECT lprectBorder);
692
693     HRESULT (STDMETHODCALLTYPE *RequestBorderSpace)(
694         IOleInPlaceFrame* This,
695         LPCBORDERWIDTHS pborderwidths);
696
697     HRESULT (STDMETHODCALLTYPE *SetBorderSpace)(
698         IOleInPlaceFrame* This,
699         LPCBORDERWIDTHS pborderwidths);
700
701     HRESULT (STDMETHODCALLTYPE *SetActiveObject)(
702         IOleInPlaceFrame* This,
703         IOleInPlaceActiveObject* pActiveObject,
704         LPCOLESTR pszObjName);
705
706     /*** IOleInPlaceFrame methods ***/
707     HRESULT (STDMETHODCALLTYPE *InsertMenus)(
708         IOleInPlaceFrame* This,
709         HMENU hmenuShared,
710         LPOLEMENUGROUPWIDTHS lpMenuWidths);
711
712     HRESULT (STDMETHODCALLTYPE *SetMenu)(
713         IOleInPlaceFrame* This,
714         HMENU hmenuShared,
715         HOLEMENU holemenu,
716         HWND hwndActiveObject);
717
718     HRESULT (STDMETHODCALLTYPE *RemoveMenus)(
719         IOleInPlaceFrame* This,
720         HMENU hmenuShared);
721
722     HRESULT (STDMETHODCALLTYPE *SetStatusText)(
723         IOleInPlaceFrame* This,
724         LPCOLESTR pszStatusText);
725
726     HRESULT (STDMETHODCALLTYPE *EnableModeless)(
727         IOleInPlaceFrame* This,
728         BOOL fEnable);
729
730     HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
731         IOleInPlaceFrame* This,
732         struct tagMSG* lpmsg,
733         WORD wID);
734
735 };
736
737 /*** IUnknown methods ***/
738 #define IOleInPlaceFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
739 #define IOleInPlaceFrame_AddRef(p) (p)->lpVtbl->AddRef(p)
740 #define IOleInPlaceFrame_Release(p) (p)->lpVtbl->Release(p)
741 /*** IOleWindow methods ***/
742 #define IOleInPlaceFrame_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
743 #define IOleInPlaceFrame_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
744 /*** IOleInPlaceUIWindow methods ***/
745 #define IOleInPlaceFrame_GetBorder(p,a) (p)->lpVtbl->GetBorder(p,a)
746 #define IOleInPlaceFrame_RequestBorderSpace(p,a) (p)->lpVtbl->RequestBorderSpace(p,a)
747 #define IOleInPlaceFrame_SetBorderSpace(p,a) (p)->lpVtbl->SetBorderSpace(p,a)
748 #define IOleInPlaceFrame_SetActiveObject(p,a,b) (p)->lpVtbl->SetActiveObject(p,a,b)
749 /*** IOleInPlaceFrame methods ***/
750 #define IOleInPlaceFrame_InsertMenus(p,a,b) (p)->lpVtbl->InsertMenus(p,a,b)
751 #define IOleInPlaceFrame_SetMenu(p,a,b,c) (p)->lpVtbl->SetMenu(p,a,b,c)
752 #define IOleInPlaceFrame_RemoveMenus(p,a) (p)->lpVtbl->RemoveMenus(p,a)
753 #define IOleInPlaceFrame_SetStatusText(p,a) (p)->lpVtbl->SetStatusText(p,a)
754 #define IOleInPlaceFrame_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a)
755 #define IOleInPlaceFrame_TranslateAccelerator(p,a,b) (p)->lpVtbl->TranslateAccelerator(p,a,b)
756
757 #endif
758
759 #define IOleInPlaceFrame_METHODS \
760     ICOM_MSVTABLE_COMPAT_FIELDS \
761     /*** IUnknown methods ***/ \
762     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
763     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
764     STDMETHOD_(ULONG,Release)(THIS) PURE; \
765     /*** IOleWindow methods ***/ \
766     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
767     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
768     /*** IOleInPlaceUIWindow methods ***/ \
769     STDMETHOD_(HRESULT,GetBorder)(THIS_ LPRECT lprectBorder) PURE; \
770     STDMETHOD_(HRESULT,RequestBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
771     STDMETHOD_(HRESULT,SetBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
772     STDMETHOD_(HRESULT,SetActiveObject)(THIS_ IOleInPlaceActiveObject* pActiveObject, LPCOLESTR pszObjName) PURE; \
773     /*** IOleInPlaceFrame methods ***/ \
774     STDMETHOD_(HRESULT,InsertMenus)(THIS_ HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE; \
775     STDMETHOD_(HRESULT,SetMenu)(THIS_ HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject) PURE; \
776     STDMETHOD_(HRESULT,RemoveMenus)(THIS_ HMENU hmenuShared) PURE; \
777     STDMETHOD_(HRESULT,SetStatusText)(THIS_ LPCOLESTR pszStatusText) PURE; \
778     STDMETHOD_(HRESULT,EnableModeless)(THIS_ BOOL fEnable) PURE; \
779     STDMETHOD_(HRESULT,TranslateAccelerator)(THIS_ struct tagMSG* lpmsg, WORD wID) PURE;
780
781 HRESULT CALLBACK IOleInPlaceFrame_InsertMenus_Proxy(
782     IOleInPlaceFrame* This,
783     HMENU hmenuShared,
784     LPOLEMENUGROUPWIDTHS lpMenuWidths);
785 void __RPC_STUB IOleInPlaceFrame_InsertMenus_Stub(
786     struct IRpcStubBuffer* This,
787     struct IRpcChannelBuffer* pRpcChannelBuffer,
788     PRPC_MESSAGE pRpcMessage,
789     DWORD* pdwStubPhase);
790 HRESULT CALLBACK IOleInPlaceFrame_SetMenu_Proxy(
791     IOleInPlaceFrame* This,
792     HMENU hmenuShared,
793     HOLEMENU holemenu,
794     HWND hwndActiveObject);
795 void __RPC_STUB IOleInPlaceFrame_SetMenu_Stub(
796     struct IRpcStubBuffer* This,
797     struct IRpcChannelBuffer* pRpcChannelBuffer,
798     PRPC_MESSAGE pRpcMessage,
799     DWORD* pdwStubPhase);
800 HRESULT CALLBACK IOleInPlaceFrame_RemoveMenus_Proxy(
801     IOleInPlaceFrame* This,
802     HMENU hmenuShared);
803 void __RPC_STUB IOleInPlaceFrame_RemoveMenus_Stub(
804     struct IRpcStubBuffer* This,
805     struct IRpcChannelBuffer* pRpcChannelBuffer,
806     PRPC_MESSAGE pRpcMessage,
807     DWORD* pdwStubPhase);
808 HRESULT CALLBACK IOleInPlaceFrame_SetStatusText_Proxy(
809     IOleInPlaceFrame* This,
810     LPCOLESTR pszStatusText);
811 void __RPC_STUB IOleInPlaceFrame_SetStatusText_Stub(
812     struct IRpcStubBuffer* This,
813     struct IRpcChannelBuffer* pRpcChannelBuffer,
814     PRPC_MESSAGE pRpcMessage,
815     DWORD* pdwStubPhase);
816 HRESULT CALLBACK IOleInPlaceFrame_EnableModeless_Proxy(
817     IOleInPlaceFrame* This,
818     BOOL fEnable);
819 void __RPC_STUB IOleInPlaceFrame_EnableModeless_Stub(
820     struct IRpcStubBuffer* This,
821     struct IRpcChannelBuffer* pRpcChannelBuffer,
822     PRPC_MESSAGE pRpcMessage,
823     DWORD* pdwStubPhase);
824 HRESULT CALLBACK IOleInPlaceFrame_TranslateAccelerator_Proxy(
825     IOleInPlaceFrame* This,
826     struct tagMSG* lpmsg,
827     WORD wID);
828 void __RPC_STUB IOleInPlaceFrame_TranslateAccelerator_Stub(
829     struct IRpcStubBuffer* This,
830     struct IRpcChannelBuffer* pRpcChannelBuffer,
831     PRPC_MESSAGE pRpcMessage,
832     DWORD* pdwStubPhase);
833
834 #endif  /* __IOleInPlaceFrame_INTERFACE_DEFINED__ */
835
836 #ifndef __IOleInPlaceSite_FWD_DEFINED__
837 #define __IOleInPlaceSite_FWD_DEFINED__
838 typedef struct IOleInPlaceSite IOleInPlaceSite;
839 #endif
840
841 typedef IOleInPlaceSite *LPOLEINPLACESITE;
842
843 /*****************************************************************************
844  * IOleInPlaceSite interface
845  */
846 #ifndef __IOleInPlaceSite_INTERFACE_DEFINED__
847 #define __IOleInPlaceSite_INTERFACE_DEFINED__
848
849 DEFINE_GUID(IID_IOleInPlaceSite, 0x00000119, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
850 #if defined(__cplusplus) && !defined(CINTERFACE)
851 struct IOleInPlaceSite : public IOleWindow
852 {
853     virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate(
854         ) = 0;
855
856     virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate(
857         ) = 0;
858
859     virtual HRESULT STDMETHODCALLTYPE OnUIActivate(
860         ) = 0;
861
862     virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
863         IOleInPlaceFrame** ppFrame,
864         IOleInPlaceUIWindow** ppDoc,
865         LPRECT lprcPosRect,
866         LPRECT lprcClipRect,
867         LPOLEINPLACEFRAMEINFO lpFrameInfo) = 0;
868
869     virtual HRESULT STDMETHODCALLTYPE Scroll(
870         SIZE scrollExtant) = 0;
871
872     virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(
873         BOOL fUndoable) = 0;
874
875     virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate(
876         ) = 0;
877
878     virtual HRESULT STDMETHODCALLTYPE DiscardUndoState(
879         ) = 0;
880
881     virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(
882         ) = 0;
883
884     virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(
885         LPCRECT lprcPosRect) = 0;
886
887 };
888 #else
889 typedef struct IOleInPlaceSiteVtbl IOleInPlaceSiteVtbl;
890 struct IOleInPlaceSite {
891     const IOleInPlaceSiteVtbl* lpVtbl;
892 };
893 struct IOleInPlaceSiteVtbl {
894     ICOM_MSVTABLE_COMPAT_FIELDS
895
896     /*** IUnknown methods ***/
897     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
898         IOleInPlaceSite* This,
899         REFIID riid,
900         void** ppvObject);
901
902     ULONG (STDMETHODCALLTYPE *AddRef)(
903         IOleInPlaceSite* This);
904
905     ULONG (STDMETHODCALLTYPE *Release)(
906         IOleInPlaceSite* This);
907
908     /*** IOleWindow methods ***/
909     HRESULT (STDMETHODCALLTYPE *GetWindow)(
910         IOleInPlaceSite* This,
911         HWND* phwnd);
912
913     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
914         IOleInPlaceSite* This,
915         BOOL fEnterMode);
916
917     /*** IOleInPlaceSite methods ***/
918     HRESULT (STDMETHODCALLTYPE *CanInPlaceActivate)(
919         IOleInPlaceSite* This);
920
921     HRESULT (STDMETHODCALLTYPE *OnInPlaceActivate)(
922         IOleInPlaceSite* This);
923
924     HRESULT (STDMETHODCALLTYPE *OnUIActivate)(
925         IOleInPlaceSite* This);
926
927     HRESULT (STDMETHODCALLTYPE *GetWindowContext)(
928         IOleInPlaceSite* This,
929         IOleInPlaceFrame** ppFrame,
930         IOleInPlaceUIWindow** ppDoc,
931         LPRECT lprcPosRect,
932         LPRECT lprcClipRect,
933         LPOLEINPLACEFRAMEINFO lpFrameInfo);
934
935     HRESULT (STDMETHODCALLTYPE *Scroll)(
936         IOleInPlaceSite* This,
937         SIZE scrollExtant);
938
939     HRESULT (STDMETHODCALLTYPE *OnUIDeactivate)(
940         IOleInPlaceSite* This,
941         BOOL fUndoable);
942
943     HRESULT (STDMETHODCALLTYPE *OnInPlaceDeactivate)(
944         IOleInPlaceSite* This);
945
946     HRESULT (STDMETHODCALLTYPE *DiscardUndoState)(
947         IOleInPlaceSite* This);
948
949     HRESULT (STDMETHODCALLTYPE *DeactivateAndUndo)(
950         IOleInPlaceSite* This);
951
952     HRESULT (STDMETHODCALLTYPE *OnPosRectChange)(
953         IOleInPlaceSite* This,
954         LPCRECT lprcPosRect);
955
956 };
957
958 /*** IUnknown methods ***/
959 #define IOleInPlaceSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
960 #define IOleInPlaceSite_AddRef(p) (p)->lpVtbl->AddRef(p)
961 #define IOleInPlaceSite_Release(p) (p)->lpVtbl->Release(p)
962 /*** IOleWindow methods ***/
963 #define IOleInPlaceSite_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
964 #define IOleInPlaceSite_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
965 /*** IOleInPlaceSite methods ***/
966 #define IOleInPlaceSite_CanInPlaceActivate(p) (p)->lpVtbl->CanInPlaceActivate(p)
967 #define IOleInPlaceSite_OnInPlaceActivate(p) (p)->lpVtbl->OnInPlaceActivate(p)
968 #define IOleInPlaceSite_OnUIActivate(p) (p)->lpVtbl->OnUIActivate(p)
969 #define IOleInPlaceSite_GetWindowContext(p,a,b,c,d,e) (p)->lpVtbl->GetWindowContext(p,a,b,c,d,e)
970 #define IOleInPlaceSite_Scroll(p,a) (p)->lpVtbl->Scroll(p,a)
971 #define IOleInPlaceSite_OnUIDeactivate(p,a) (p)->lpVtbl->OnUIDeactivate(p,a)
972 #define IOleInPlaceSite_OnInPlaceDeactivate(p) (p)->lpVtbl->OnInPlaceDeactivate(p)
973 #define IOleInPlaceSite_DiscardUndoState(p) (p)->lpVtbl->DiscardUndoState(p)
974 #define IOleInPlaceSite_DeactivateAndUndo(p) (p)->lpVtbl->DeactivateAndUndo(p)
975 #define IOleInPlaceSite_OnPosRectChange(p,a) (p)->lpVtbl->OnPosRectChange(p,a)
976
977 #endif
978
979 #define IOleInPlaceSite_METHODS \
980     ICOM_MSVTABLE_COMPAT_FIELDS \
981     /*** IUnknown methods ***/ \
982     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
983     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
984     STDMETHOD_(ULONG,Release)(THIS) PURE; \
985     /*** IOleWindow methods ***/ \
986     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
987     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
988     /*** IOleInPlaceSite methods ***/ \
989     STDMETHOD_(HRESULT,CanInPlaceActivate)(THIS) PURE; \
990     STDMETHOD_(HRESULT,OnInPlaceActivate)(THIS) PURE; \
991     STDMETHOD_(HRESULT,OnUIActivate)(THIS) PURE; \
992     STDMETHOD_(HRESULT,GetWindowContext)(THIS_ IOleInPlaceFrame** ppFrame, IOleInPlaceUIWindow** ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE; \
993     STDMETHOD_(HRESULT,Scroll)(THIS_ SIZE scrollExtant) PURE; \
994     STDMETHOD_(HRESULT,OnUIDeactivate)(THIS_ BOOL fUndoable) PURE; \
995     STDMETHOD_(HRESULT,OnInPlaceDeactivate)(THIS) PURE; \
996     STDMETHOD_(HRESULT,DiscardUndoState)(THIS) PURE; \
997     STDMETHOD_(HRESULT,DeactivateAndUndo)(THIS) PURE; \
998     STDMETHOD_(HRESULT,OnPosRectChange)(THIS_ LPCRECT lprcPosRect) PURE;
999
1000 HRESULT CALLBACK IOleInPlaceSite_CanInPlaceActivate_Proxy(
1001     IOleInPlaceSite* This);
1002 void __RPC_STUB IOleInPlaceSite_CanInPlaceActivate_Stub(
1003     struct IRpcStubBuffer* This,
1004     struct IRpcChannelBuffer* pRpcChannelBuffer,
1005     PRPC_MESSAGE pRpcMessage,
1006     DWORD* pdwStubPhase);
1007 HRESULT CALLBACK IOleInPlaceSite_OnInPlaceActivate_Proxy(
1008     IOleInPlaceSite* This);
1009 void __RPC_STUB IOleInPlaceSite_OnInPlaceActivate_Stub(
1010     struct IRpcStubBuffer* This,
1011     struct IRpcChannelBuffer* pRpcChannelBuffer,
1012     PRPC_MESSAGE pRpcMessage,
1013     DWORD* pdwStubPhase);
1014 HRESULT CALLBACK IOleInPlaceSite_OnUIActivate_Proxy(
1015     IOleInPlaceSite* This);
1016 void __RPC_STUB IOleInPlaceSite_OnUIActivate_Stub(
1017     struct IRpcStubBuffer* This,
1018     struct IRpcChannelBuffer* pRpcChannelBuffer,
1019     PRPC_MESSAGE pRpcMessage,
1020     DWORD* pdwStubPhase);
1021 HRESULT CALLBACK IOleInPlaceSite_GetWindowContext_Proxy(
1022     IOleInPlaceSite* This,
1023     IOleInPlaceFrame** ppFrame,
1024     IOleInPlaceUIWindow** ppDoc,
1025     LPRECT lprcPosRect,
1026     LPRECT lprcClipRect,
1027     LPOLEINPLACEFRAMEINFO lpFrameInfo);
1028 void __RPC_STUB IOleInPlaceSite_GetWindowContext_Stub(
1029     struct IRpcStubBuffer* This,
1030     struct IRpcChannelBuffer* pRpcChannelBuffer,
1031     PRPC_MESSAGE pRpcMessage,
1032     DWORD* pdwStubPhase);
1033 HRESULT CALLBACK IOleInPlaceSite_Scroll_Proxy(
1034     IOleInPlaceSite* This,
1035     SIZE scrollExtant);
1036 void __RPC_STUB IOleInPlaceSite_Scroll_Stub(
1037     struct IRpcStubBuffer* This,
1038     struct IRpcChannelBuffer* pRpcChannelBuffer,
1039     PRPC_MESSAGE pRpcMessage,
1040     DWORD* pdwStubPhase);
1041 HRESULT CALLBACK IOleInPlaceSite_OnUIDeactivate_Proxy(
1042     IOleInPlaceSite* This,
1043     BOOL fUndoable);
1044 void __RPC_STUB IOleInPlaceSite_OnUIDeactivate_Stub(
1045     struct IRpcStubBuffer* This,
1046     struct IRpcChannelBuffer* pRpcChannelBuffer,
1047     PRPC_MESSAGE pRpcMessage,
1048     DWORD* pdwStubPhase);
1049 HRESULT CALLBACK IOleInPlaceSite_OnInPlaceDeactivate_Proxy(
1050     IOleInPlaceSite* This);
1051 void __RPC_STUB IOleInPlaceSite_OnInPlaceDeactivate_Stub(
1052     struct IRpcStubBuffer* This,
1053     struct IRpcChannelBuffer* pRpcChannelBuffer,
1054     PRPC_MESSAGE pRpcMessage,
1055     DWORD* pdwStubPhase);
1056 HRESULT CALLBACK IOleInPlaceSite_DiscardUndoState_Proxy(
1057     IOleInPlaceSite* This);
1058 void __RPC_STUB IOleInPlaceSite_DiscardUndoState_Stub(
1059     struct IRpcStubBuffer* This,
1060     struct IRpcChannelBuffer* pRpcChannelBuffer,
1061     PRPC_MESSAGE pRpcMessage,
1062     DWORD* pdwStubPhase);
1063 HRESULT CALLBACK IOleInPlaceSite_DeactivateAndUndo_Proxy(
1064     IOleInPlaceSite* This);
1065 void __RPC_STUB IOleInPlaceSite_DeactivateAndUndo_Stub(
1066     struct IRpcStubBuffer* This,
1067     struct IRpcChannelBuffer* pRpcChannelBuffer,
1068     PRPC_MESSAGE pRpcMessage,
1069     DWORD* pdwStubPhase);
1070 HRESULT CALLBACK IOleInPlaceSite_OnPosRectChange_Proxy(
1071     IOleInPlaceSite* This,
1072     LPCRECT lprcPosRect);
1073 void __RPC_STUB IOleInPlaceSite_OnPosRectChange_Stub(
1074     struct IRpcStubBuffer* This,
1075     struct IRpcChannelBuffer* pRpcChannelBuffer,
1076     PRPC_MESSAGE pRpcMessage,
1077     DWORD* pdwStubPhase);
1078
1079 #endif  /* __IOleInPlaceSite_INTERFACE_DEFINED__ */
1080
1081 #ifndef __IParseDisplayName_FWD_DEFINED__
1082 #define __IParseDisplayName_FWD_DEFINED__
1083 typedef struct IParseDisplayName IParseDisplayName;
1084 #endif
1085
1086 typedef IParseDisplayName *LPPARSEDISPLAYNAME;
1087
1088 /*****************************************************************************
1089  * IParseDisplayName interface
1090  */
1091 #ifndef __IParseDisplayName_INTERFACE_DEFINED__
1092 #define __IParseDisplayName_INTERFACE_DEFINED__
1093
1094 DEFINE_GUID(IID_IParseDisplayName, 0x0000011a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1095 #if defined(__cplusplus) && !defined(CINTERFACE)
1096 struct IParseDisplayName : public IUnknown
1097 {
1098     virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
1099         IBindCtx* pbc,
1100         LPOLESTR pszDisplayName,
1101         ULONG* pchEaten,
1102         IMoniker** ppmkOut) = 0;
1103
1104 };
1105 #else
1106 typedef struct IParseDisplayNameVtbl IParseDisplayNameVtbl;
1107 struct IParseDisplayName {
1108     const IParseDisplayNameVtbl* lpVtbl;
1109 };
1110 struct IParseDisplayNameVtbl {
1111     ICOM_MSVTABLE_COMPAT_FIELDS
1112
1113     /*** IUnknown methods ***/
1114     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1115         IParseDisplayName* This,
1116         REFIID riid,
1117         void** ppvObject);
1118
1119     ULONG (STDMETHODCALLTYPE *AddRef)(
1120         IParseDisplayName* This);
1121
1122     ULONG (STDMETHODCALLTYPE *Release)(
1123         IParseDisplayName* This);
1124
1125     /*** IParseDisplayName methods ***/
1126     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
1127         IParseDisplayName* This,
1128         IBindCtx* pbc,
1129         LPOLESTR pszDisplayName,
1130         ULONG* pchEaten,
1131         IMoniker** ppmkOut);
1132
1133 };
1134
1135 /*** IUnknown methods ***/
1136 #define IParseDisplayName_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1137 #define IParseDisplayName_AddRef(p) (p)->lpVtbl->AddRef(p)
1138 #define IParseDisplayName_Release(p) (p)->lpVtbl->Release(p)
1139 /*** IParseDisplayName methods ***/
1140 #define IParseDisplayName_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
1141
1142 #endif
1143
1144 #define IParseDisplayName_METHODS \
1145     ICOM_MSVTABLE_COMPAT_FIELDS \
1146     /*** IUnknown methods ***/ \
1147     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1148     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1149     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1150     /*** IParseDisplayName methods ***/ \
1151     STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE;
1152
1153 HRESULT CALLBACK IParseDisplayName_ParseDisplayName_Proxy(
1154     IParseDisplayName* This,
1155     IBindCtx* pbc,
1156     LPOLESTR pszDisplayName,
1157     ULONG* pchEaten,
1158     IMoniker** ppmkOut);
1159 void __RPC_STUB IParseDisplayName_ParseDisplayName_Stub(
1160     struct IRpcStubBuffer* This,
1161     struct IRpcChannelBuffer* pRpcChannelBuffer,
1162     PRPC_MESSAGE pRpcMessage,
1163     DWORD* pdwStubPhase);
1164
1165 #endif  /* __IParseDisplayName_INTERFACE_DEFINED__ */
1166
1167 #ifndef __IOleContainer_FWD_DEFINED__
1168 #define __IOleContainer_FWD_DEFINED__
1169 typedef struct IOleContainer IOleContainer;
1170 #endif
1171
1172 typedef IOleContainer *LPOLECONTAINER;
1173
1174 /*****************************************************************************
1175  * IOleContainer interface
1176  */
1177 #ifndef __IOleContainer_INTERFACE_DEFINED__
1178 #define __IOleContainer_INTERFACE_DEFINED__
1179
1180 DEFINE_GUID(IID_IOleContainer, 0x0000011b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1181 #if defined(__cplusplus) && !defined(CINTERFACE)
1182 struct IOleContainer : public IParseDisplayName
1183 {
1184     virtual HRESULT STDMETHODCALLTYPE EnumObjects(
1185         DWORD grfFlags,
1186         IEnumUnknown** ppenum) = 0;
1187
1188     virtual HRESULT STDMETHODCALLTYPE LockContainer(
1189         BOOL fLock) = 0;
1190
1191 };
1192 #else
1193 typedef struct IOleContainerVtbl IOleContainerVtbl;
1194 struct IOleContainer {
1195     const IOleContainerVtbl* lpVtbl;
1196 };
1197 struct IOleContainerVtbl {
1198     ICOM_MSVTABLE_COMPAT_FIELDS
1199
1200     /*** IUnknown methods ***/
1201     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1202         IOleContainer* This,
1203         REFIID riid,
1204         void** ppvObject);
1205
1206     ULONG (STDMETHODCALLTYPE *AddRef)(
1207         IOleContainer* This);
1208
1209     ULONG (STDMETHODCALLTYPE *Release)(
1210         IOleContainer* This);
1211
1212     /*** IParseDisplayName methods ***/
1213     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
1214         IOleContainer* This,
1215         IBindCtx* pbc,
1216         LPOLESTR pszDisplayName,
1217         ULONG* pchEaten,
1218         IMoniker** ppmkOut);
1219
1220     /*** IOleContainer methods ***/
1221     HRESULT (STDMETHODCALLTYPE *EnumObjects)(
1222         IOleContainer* This,
1223         DWORD grfFlags,
1224         IEnumUnknown** ppenum);
1225
1226     HRESULT (STDMETHODCALLTYPE *LockContainer)(
1227         IOleContainer* This,
1228         BOOL fLock);
1229
1230 };
1231
1232 /*** IUnknown methods ***/
1233 #define IOleContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1234 #define IOleContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
1235 #define IOleContainer_Release(p) (p)->lpVtbl->Release(p)
1236 /*** IParseDisplayName methods ***/
1237 #define IOleContainer_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
1238 /*** IOleContainer methods ***/
1239 #define IOleContainer_EnumObjects(p,a,b) (p)->lpVtbl->EnumObjects(p,a,b)
1240 #define IOleContainer_LockContainer(p,a) (p)->lpVtbl->LockContainer(p,a)
1241
1242 #endif
1243
1244 #define IOleContainer_METHODS \
1245     ICOM_MSVTABLE_COMPAT_FIELDS \
1246     /*** IUnknown methods ***/ \
1247     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1248     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1249     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1250     /*** IParseDisplayName methods ***/ \
1251     STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE; \
1252     /*** IOleContainer methods ***/ \
1253     STDMETHOD_(HRESULT,EnumObjects)(THIS_ DWORD grfFlags, IEnumUnknown** ppenum) PURE; \
1254     STDMETHOD_(HRESULT,LockContainer)(THIS_ BOOL fLock) PURE;
1255
1256 HRESULT CALLBACK IOleContainer_EnumObjects_Proxy(
1257     IOleContainer* This,
1258     DWORD grfFlags,
1259     IEnumUnknown** ppenum);
1260 void __RPC_STUB IOleContainer_EnumObjects_Stub(
1261     struct IRpcStubBuffer* This,
1262     struct IRpcChannelBuffer* pRpcChannelBuffer,
1263     PRPC_MESSAGE pRpcMessage,
1264     DWORD* pdwStubPhase);
1265 HRESULT CALLBACK IOleContainer_LockContainer_Proxy(
1266     IOleContainer* This,
1267     BOOL fLock);
1268 void __RPC_STUB IOleContainer_LockContainer_Stub(
1269     struct IRpcStubBuffer* This,
1270     struct IRpcChannelBuffer* pRpcChannelBuffer,
1271     PRPC_MESSAGE pRpcMessage,
1272     DWORD* pdwStubPhase);
1273
1274 #endif  /* __IOleContainer_INTERFACE_DEFINED__ */
1275
1276 #ifndef __IOleItemContainer_FWD_DEFINED__
1277 #define __IOleItemContainer_FWD_DEFINED__
1278 typedef struct IOleItemContainer IOleItemContainer;
1279 #endif
1280
1281 typedef IOleItemContainer *LPOLEITEMCONTAINER;
1282
1283 typedef enum tagBINDSPEED {
1284     BINDSPEED_INDEFINITE = 1,
1285     BINDSPEED_MODERATE = 2,
1286     BINDSPEED_IMMEDIATE = 3
1287 } BINDSPEED;
1288
1289 typedef enum tagOLECONTF {
1290     OLECONTF_EMBEDDINGS = 1,
1291     OLECONTF_LINKS = 2,
1292     OLECONTF_OTHERS = 4,
1293     OLECONTF_OLNYUSER = 8,
1294     OLECONTF_ONLYIFRUNNING = 16
1295 } OLECONTF;
1296
1297 #ifdef __WINESRC__
1298 #undef GetObject
1299 #endif
1300 /*****************************************************************************
1301  * IOleItemContainer interface
1302  */
1303 #ifndef __IOleItemContainer_INTERFACE_DEFINED__
1304 #define __IOleItemContainer_INTERFACE_DEFINED__
1305
1306 DEFINE_GUID(IID_IOleItemContainer, 0x0000011c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1307 #if defined(__cplusplus) && !defined(CINTERFACE)
1308 struct IOleItemContainer : public IOleContainer
1309 {
1310     virtual HRESULT STDMETHODCALLTYPE GetObject(
1311         LPOLESTR pszItem,
1312         DWORD dwSpeedNeeded,
1313         IBindCtx* pbc,
1314         REFIID riid,
1315         void** ppvObject) = 0;
1316
1317     virtual HRESULT STDMETHODCALLTYPE GetObjectStorage(
1318         LPOLESTR pszItem,
1319         IBindCtx* pbc,
1320         REFIID riid,
1321         void** ppvStorage) = 0;
1322
1323     virtual HRESULT STDMETHODCALLTYPE IsRunning(
1324         LPOLESTR pszItem) = 0;
1325
1326 };
1327 #else
1328 typedef struct IOleItemContainerVtbl IOleItemContainerVtbl;
1329 struct IOleItemContainer {
1330     const IOleItemContainerVtbl* lpVtbl;
1331 };
1332 struct IOleItemContainerVtbl {
1333     ICOM_MSVTABLE_COMPAT_FIELDS
1334
1335     /*** IUnknown methods ***/
1336     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1337         IOleItemContainer* This,
1338         REFIID riid,
1339         void** ppvObject);
1340
1341     ULONG (STDMETHODCALLTYPE *AddRef)(
1342         IOleItemContainer* This);
1343
1344     ULONG (STDMETHODCALLTYPE *Release)(
1345         IOleItemContainer* This);
1346
1347     /*** IParseDisplayName methods ***/
1348     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
1349         IOleItemContainer* This,
1350         IBindCtx* pbc,
1351         LPOLESTR pszDisplayName,
1352         ULONG* pchEaten,
1353         IMoniker** ppmkOut);
1354
1355     /*** IOleContainer methods ***/
1356     HRESULT (STDMETHODCALLTYPE *EnumObjects)(
1357         IOleItemContainer* This,
1358         DWORD grfFlags,
1359         IEnumUnknown** ppenum);
1360
1361     HRESULT (STDMETHODCALLTYPE *LockContainer)(
1362         IOleItemContainer* This,
1363         BOOL fLock);
1364
1365     /*** IOleItemContainer methods ***/
1366     HRESULT (STDMETHODCALLTYPE *GetObject)(
1367         IOleItemContainer* This,
1368         LPOLESTR pszItem,
1369         DWORD dwSpeedNeeded,
1370         IBindCtx* pbc,
1371         REFIID riid,
1372         void** ppvObject);
1373
1374     HRESULT (STDMETHODCALLTYPE *GetObjectStorage)(
1375         IOleItemContainer* This,
1376         LPOLESTR pszItem,
1377         IBindCtx* pbc,
1378         REFIID riid,
1379         void** ppvStorage);
1380
1381     HRESULT (STDMETHODCALLTYPE *IsRunning)(
1382         IOleItemContainer* This,
1383         LPOLESTR pszItem);
1384
1385 };
1386
1387 /*** IUnknown methods ***/
1388 #define IOleItemContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1389 #define IOleItemContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
1390 #define IOleItemContainer_Release(p) (p)->lpVtbl->Release(p)
1391 /*** IParseDisplayName methods ***/
1392 #define IOleItemContainer_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
1393 /*** IOleContainer methods ***/
1394 #define IOleItemContainer_EnumObjects(p,a,b) (p)->lpVtbl->EnumObjects(p,a,b)
1395 #define IOleItemContainer_LockContainer(p,a) (p)->lpVtbl->LockContainer(p,a)
1396 /*** IOleItemContainer methods ***/
1397 #define IOleItemContainer_GetObject(p,a,b,c,d,e) (p)->lpVtbl->GetObject(p,a,b,c,d,e)
1398 #define IOleItemContainer_GetObjectStorage(p,a,b,c,d) (p)->lpVtbl->GetObjectStorage(p,a,b,c,d)
1399 #define IOleItemContainer_IsRunning(p,a) (p)->lpVtbl->IsRunning(p,a)
1400
1401 #endif
1402
1403 #define IOleItemContainer_METHODS \
1404     ICOM_MSVTABLE_COMPAT_FIELDS \
1405     /*** IUnknown methods ***/ \
1406     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1407     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1408     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1409     /*** IParseDisplayName methods ***/ \
1410     STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE; \
1411     /*** IOleContainer methods ***/ \
1412     STDMETHOD_(HRESULT,EnumObjects)(THIS_ DWORD grfFlags, IEnumUnknown** ppenum) PURE; \
1413     STDMETHOD_(HRESULT,LockContainer)(THIS_ BOOL fLock) PURE; \
1414     /*** IOleItemContainer methods ***/ \
1415     STDMETHOD_(HRESULT,GetObject)(THIS_ LPOLESTR pszItem, DWORD dwSpeedNeeded, IBindCtx* pbc, REFIID riid, void** ppvObject) PURE; \
1416     STDMETHOD_(HRESULT,GetObjectStorage)(THIS_ LPOLESTR pszItem, IBindCtx* pbc, REFIID riid, void** ppvStorage) PURE; \
1417     STDMETHOD_(HRESULT,IsRunning)(THIS_ LPOLESTR pszItem) PURE;
1418
1419 HRESULT CALLBACK IOleItemContainer_GetObject_Proxy(
1420     IOleItemContainer* This,
1421     LPOLESTR pszItem,
1422     DWORD dwSpeedNeeded,
1423     IBindCtx* pbc,
1424     REFIID riid,
1425     void** ppvObject);
1426 void __RPC_STUB IOleItemContainer_GetObject_Stub(
1427     struct IRpcStubBuffer* This,
1428     struct IRpcChannelBuffer* pRpcChannelBuffer,
1429     PRPC_MESSAGE pRpcMessage,
1430     DWORD* pdwStubPhase);
1431 HRESULT CALLBACK IOleItemContainer_GetObjectStorage_Proxy(
1432     IOleItemContainer* This,
1433     LPOLESTR pszItem,
1434     IBindCtx* pbc,
1435     REFIID riid,
1436     void** ppvStorage);
1437 void __RPC_STUB IOleItemContainer_GetObjectStorage_Stub(
1438     struct IRpcStubBuffer* This,
1439     struct IRpcChannelBuffer* pRpcChannelBuffer,
1440     PRPC_MESSAGE pRpcMessage,
1441     DWORD* pdwStubPhase);
1442 HRESULT CALLBACK IOleItemContainer_IsRunning_Proxy(
1443     IOleItemContainer* This,
1444     LPOLESTR pszItem);
1445 void __RPC_STUB IOleItemContainer_IsRunning_Stub(
1446     struct IRpcStubBuffer* This,
1447     struct IRpcChannelBuffer* pRpcChannelBuffer,
1448     PRPC_MESSAGE pRpcMessage,
1449     DWORD* pdwStubPhase);
1450
1451 #endif  /* __IOleItemContainer_INTERFACE_DEFINED__ */
1452
1453 #ifndef __IOleLink_FWD_DEFINED__
1454 #define __IOleLink_FWD_DEFINED__
1455 typedef struct IOleLink IOleLink;
1456 #endif
1457
1458 typedef IOleLink *LPOLELINK;
1459
1460 typedef enum tagOLEUPDATE {
1461     OLEUPDATE_ALWAYS = 1,
1462     OLEUPDATE_ONCALL = 3
1463 } OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE;
1464
1465 typedef enum tagOLELINKBIND {
1466     OLELINKBIND_EVENIFCLASSDIFF = 1
1467 } OLELINKBIND;
1468
1469 /*****************************************************************************
1470  * IOleLink interface
1471  */
1472 #ifndef __IOleLink_INTERFACE_DEFINED__
1473 #define __IOleLink_INTERFACE_DEFINED__
1474
1475 DEFINE_GUID(IID_IOleLink, 0x0000011d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1476 #if defined(__cplusplus) && !defined(CINTERFACE)
1477 struct IOleLink : public IUnknown
1478 {
1479     virtual HRESULT STDMETHODCALLTYPE SetUpdateOptions(
1480         DWORD dwUpdateOpt) = 0;
1481
1482     virtual HRESULT STDMETHODCALLTYPE GetUpdateOptions(
1483         DWORD* pdwUpdateOpt) = 0;
1484
1485     virtual HRESULT STDMETHODCALLTYPE SetSourceMoniker(
1486         IMoniker* pmk,
1487         REFCLSID rclsid) = 0;
1488
1489     virtual HRESULT STDMETHODCALLTYPE GetSourceMoniker(
1490         IMoniker** ppmk) = 0;
1491
1492     virtual HRESULT STDMETHODCALLTYPE SetSourceDisplayName(
1493         LPCOLESTR pszStatusText) = 0;
1494
1495     virtual HRESULT STDMETHODCALLTYPE GetSourceDisplayName(
1496         LPOLESTR* ppszDisplayName) = 0;
1497
1498     virtual HRESULT STDMETHODCALLTYPE BindToSource(
1499         DWORD bindflags,
1500         IBindCtx* pbc) = 0;
1501
1502     virtual HRESULT STDMETHODCALLTYPE BindIfRunning(
1503         ) = 0;
1504
1505     virtual HRESULT STDMETHODCALLTYPE GetBoundSource(
1506         IUnknown** ppunk) = 0;
1507
1508     virtual HRESULT STDMETHODCALLTYPE UnbindSource(
1509         ) = 0;
1510
1511     virtual HRESULT STDMETHODCALLTYPE Update(
1512         IBindCtx* pbc) = 0;
1513
1514 };
1515 #else
1516 typedef struct IOleLinkVtbl IOleLinkVtbl;
1517 struct IOleLink {
1518     const IOleLinkVtbl* lpVtbl;
1519 };
1520 struct IOleLinkVtbl {
1521     ICOM_MSVTABLE_COMPAT_FIELDS
1522
1523     /*** IUnknown methods ***/
1524     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1525         IOleLink* This,
1526         REFIID riid,
1527         void** ppvObject);
1528
1529     ULONG (STDMETHODCALLTYPE *AddRef)(
1530         IOleLink* This);
1531
1532     ULONG (STDMETHODCALLTYPE *Release)(
1533         IOleLink* This);
1534
1535     /*** IOleLink methods ***/
1536     HRESULT (STDMETHODCALLTYPE *SetUpdateOptions)(
1537         IOleLink* This,
1538         DWORD dwUpdateOpt);
1539
1540     HRESULT (STDMETHODCALLTYPE *GetUpdateOptions)(
1541         IOleLink* This,
1542         DWORD* pdwUpdateOpt);
1543
1544     HRESULT (STDMETHODCALLTYPE *SetSourceMoniker)(
1545         IOleLink* This,
1546         IMoniker* pmk,
1547         REFCLSID rclsid);
1548
1549     HRESULT (STDMETHODCALLTYPE *GetSourceMoniker)(
1550         IOleLink* This,
1551         IMoniker** ppmk);
1552
1553     HRESULT (STDMETHODCALLTYPE *SetSourceDisplayName)(
1554         IOleLink* This,
1555         LPCOLESTR pszStatusText);
1556
1557     HRESULT (STDMETHODCALLTYPE *GetSourceDisplayName)(
1558         IOleLink* This,
1559         LPOLESTR* ppszDisplayName);
1560
1561     HRESULT (STDMETHODCALLTYPE *BindToSource)(
1562         IOleLink* This,
1563         DWORD bindflags,
1564         IBindCtx* pbc);
1565
1566     HRESULT (STDMETHODCALLTYPE *BindIfRunning)(
1567         IOleLink* This);
1568
1569     HRESULT (STDMETHODCALLTYPE *GetBoundSource)(
1570         IOleLink* This,
1571         IUnknown** ppunk);
1572
1573     HRESULT (STDMETHODCALLTYPE *UnbindSource)(
1574         IOleLink* This);
1575
1576     HRESULT (STDMETHODCALLTYPE *Update)(
1577         IOleLink* This,
1578         IBindCtx* pbc);
1579
1580 };
1581
1582 /*** IUnknown methods ***/
1583 #define IOleLink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1584 #define IOleLink_AddRef(p) (p)->lpVtbl->AddRef(p)
1585 #define IOleLink_Release(p) (p)->lpVtbl->Release(p)
1586 /*** IOleLink methods ***/
1587 #define IOleLink_SetUpdateOptions(p,a) (p)->lpVtbl->SetUpdateOptions(p,a)
1588 #define IOleLink_GetUpdateOptions(p,a) (p)->lpVtbl->GetUpdateOptions(p,a)
1589 #define IOleLink_SetSourceMoniker(p,a,b) (p)->lpVtbl->SetSourceMoniker(p,a,b)
1590 #define IOleLink_GetSourceMoniker(p,a) (p)->lpVtbl->GetSourceMoniker(p,a)
1591 #define IOleLink_SetSourceDisplayName(p,a) (p)->lpVtbl->SetSourceDisplayName(p,a)
1592 #define IOleLink_GetSourceDisplayName(p,a) (p)->lpVtbl->GetSourceDisplayName(p,a)
1593 #define IOleLink_BindToSource(p,a,b) (p)->lpVtbl->BindToSource(p,a,b)
1594 #define IOleLink_BindIfRunning(p) (p)->lpVtbl->BindIfRunning(p)
1595 #define IOleLink_GetBoundSource(p,a) (p)->lpVtbl->GetBoundSource(p,a)
1596 #define IOleLink_UnbindSource(p) (p)->lpVtbl->UnbindSource(p)
1597 #define IOleLink_Update(p,a) (p)->lpVtbl->Update(p,a)
1598
1599 #endif
1600
1601 #define IOleLink_METHODS \
1602     ICOM_MSVTABLE_COMPAT_FIELDS \
1603     /*** IUnknown methods ***/ \
1604     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1605     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1606     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1607     /*** IOleLink methods ***/ \
1608     STDMETHOD_(HRESULT,SetUpdateOptions)(THIS_ DWORD dwUpdateOpt) PURE; \
1609     STDMETHOD_(HRESULT,GetUpdateOptions)(THIS_ DWORD* pdwUpdateOpt) PURE; \
1610     STDMETHOD_(HRESULT,SetSourceMoniker)(THIS_ IMoniker* pmk, REFCLSID rclsid) PURE; \
1611     STDMETHOD_(HRESULT,GetSourceMoniker)(THIS_ IMoniker** ppmk) PURE; \
1612     STDMETHOD_(HRESULT,SetSourceDisplayName)(THIS_ LPCOLESTR pszStatusText) PURE; \
1613     STDMETHOD_(HRESULT,GetSourceDisplayName)(THIS_ LPOLESTR* ppszDisplayName) PURE; \
1614     STDMETHOD_(HRESULT,BindToSource)(THIS_ DWORD bindflags, IBindCtx* pbc) PURE; \
1615     STDMETHOD_(HRESULT,BindIfRunning)(THIS) PURE; \
1616     STDMETHOD_(HRESULT,GetBoundSource)(THIS_ IUnknown** ppunk) PURE; \
1617     STDMETHOD_(HRESULT,UnbindSource)(THIS) PURE; \
1618     STDMETHOD_(HRESULT,Update)(THIS_ IBindCtx* pbc) PURE;
1619
1620 HRESULT CALLBACK IOleLink_SetUpdateOptions_Proxy(
1621     IOleLink* This,
1622     DWORD dwUpdateOpt);
1623 void __RPC_STUB IOleLink_SetUpdateOptions_Stub(
1624     struct IRpcStubBuffer* This,
1625     struct IRpcChannelBuffer* pRpcChannelBuffer,
1626     PRPC_MESSAGE pRpcMessage,
1627     DWORD* pdwStubPhase);
1628 HRESULT CALLBACK IOleLink_GetUpdateOptions_Proxy(
1629     IOleLink* This,
1630     DWORD* pdwUpdateOpt);
1631 void __RPC_STUB IOleLink_GetUpdateOptions_Stub(
1632     struct IRpcStubBuffer* This,
1633     struct IRpcChannelBuffer* pRpcChannelBuffer,
1634     PRPC_MESSAGE pRpcMessage,
1635     DWORD* pdwStubPhase);
1636 HRESULT CALLBACK IOleLink_SetSourceMoniker_Proxy(
1637     IOleLink* This,
1638     IMoniker* pmk,
1639     REFCLSID rclsid);
1640 void __RPC_STUB IOleLink_SetSourceMoniker_Stub(
1641     struct IRpcStubBuffer* This,
1642     struct IRpcChannelBuffer* pRpcChannelBuffer,
1643     PRPC_MESSAGE pRpcMessage,
1644     DWORD* pdwStubPhase);
1645 HRESULT CALLBACK IOleLink_GetSourceMoniker_Proxy(
1646     IOleLink* This,
1647     IMoniker** ppmk);
1648 void __RPC_STUB IOleLink_GetSourceMoniker_Stub(
1649     struct IRpcStubBuffer* This,
1650     struct IRpcChannelBuffer* pRpcChannelBuffer,
1651     PRPC_MESSAGE pRpcMessage,
1652     DWORD* pdwStubPhase);
1653 HRESULT CALLBACK IOleLink_SetSourceDisplayName_Proxy(
1654     IOleLink* This,
1655     LPCOLESTR pszStatusText);
1656 void __RPC_STUB IOleLink_SetSourceDisplayName_Stub(
1657     struct IRpcStubBuffer* This,
1658     struct IRpcChannelBuffer* pRpcChannelBuffer,
1659     PRPC_MESSAGE pRpcMessage,
1660     DWORD* pdwStubPhase);
1661 HRESULT CALLBACK IOleLink_GetSourceDisplayName_Proxy(
1662     IOleLink* This,
1663     LPOLESTR* ppszDisplayName);
1664 void __RPC_STUB IOleLink_GetSourceDisplayName_Stub(
1665     struct IRpcStubBuffer* This,
1666     struct IRpcChannelBuffer* pRpcChannelBuffer,
1667     PRPC_MESSAGE pRpcMessage,
1668     DWORD* pdwStubPhase);
1669 HRESULT CALLBACK IOleLink_BindToSource_Proxy(
1670     IOleLink* This,
1671     DWORD bindflags,
1672     IBindCtx* pbc);
1673 void __RPC_STUB IOleLink_BindToSource_Stub(
1674     struct IRpcStubBuffer* This,
1675     struct IRpcChannelBuffer* pRpcChannelBuffer,
1676     PRPC_MESSAGE pRpcMessage,
1677     DWORD* pdwStubPhase);
1678 HRESULT CALLBACK IOleLink_BindIfRunning_Proxy(
1679     IOleLink* This);
1680 void __RPC_STUB IOleLink_BindIfRunning_Stub(
1681     struct IRpcStubBuffer* This,
1682     struct IRpcChannelBuffer* pRpcChannelBuffer,
1683     PRPC_MESSAGE pRpcMessage,
1684     DWORD* pdwStubPhase);
1685 HRESULT CALLBACK IOleLink_GetBoundSource_Proxy(
1686     IOleLink* This,
1687     IUnknown** ppunk);
1688 void __RPC_STUB IOleLink_GetBoundSource_Stub(
1689     struct IRpcStubBuffer* This,
1690     struct IRpcChannelBuffer* pRpcChannelBuffer,
1691     PRPC_MESSAGE pRpcMessage,
1692     DWORD* pdwStubPhase);
1693 HRESULT CALLBACK IOleLink_UnbindSource_Proxy(
1694     IOleLink* This);
1695 void __RPC_STUB IOleLink_UnbindSource_Stub(
1696     struct IRpcStubBuffer* This,
1697     struct IRpcChannelBuffer* pRpcChannelBuffer,
1698     PRPC_MESSAGE pRpcMessage,
1699     DWORD* pdwStubPhase);
1700 HRESULT CALLBACK IOleLink_Update_Proxy(
1701     IOleLink* This,
1702     IBindCtx* pbc);
1703 void __RPC_STUB IOleLink_Update_Stub(
1704     struct IRpcStubBuffer* This,
1705     struct IRpcChannelBuffer* pRpcChannelBuffer,
1706     PRPC_MESSAGE pRpcMessage,
1707     DWORD* pdwStubPhase);
1708
1709 #endif  /* __IOleLink_INTERFACE_DEFINED__ */
1710
1711 #ifndef __IOleClientSite_FWD_DEFINED__
1712 #define __IOleClientSite_FWD_DEFINED__
1713 typedef struct IOleClientSite IOleClientSite;
1714 #endif
1715
1716 typedef IOleClientSite *LPOLECLIENTSITE;
1717
1718 /*****************************************************************************
1719  * IOleClientSite interface
1720  */
1721 #ifndef __IOleClientSite_INTERFACE_DEFINED__
1722 #define __IOleClientSite_INTERFACE_DEFINED__
1723
1724 DEFINE_GUID(IID_IOleClientSite, 0x00000118, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1725 #if defined(__cplusplus) && !defined(CINTERFACE)
1726 struct IOleClientSite : public IUnknown
1727 {
1728     virtual HRESULT STDMETHODCALLTYPE SaveObject(
1729         ) = 0;
1730
1731     virtual HRESULT STDMETHODCALLTYPE GetMoniker(
1732         DWORD dwAssign,
1733         DWORD dwWhichMoniker,
1734         IMoniker** ppmk) = 0;
1735
1736     virtual HRESULT STDMETHODCALLTYPE GetContainer(
1737         IOleContainer** ppContainer) = 0;
1738
1739     virtual HRESULT STDMETHODCALLTYPE ShowObject(
1740         ) = 0;
1741
1742     virtual HRESULT STDMETHODCALLTYPE OnShowWindow(
1743         BOOL fShow) = 0;
1744
1745     virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(
1746         ) = 0;
1747
1748 };
1749 #else
1750 typedef struct IOleClientSiteVtbl IOleClientSiteVtbl;
1751 struct IOleClientSite {
1752     const IOleClientSiteVtbl* lpVtbl;
1753 };
1754 struct IOleClientSiteVtbl {
1755     ICOM_MSVTABLE_COMPAT_FIELDS
1756
1757     /*** IUnknown methods ***/
1758     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1759         IOleClientSite* This,
1760         REFIID riid,
1761         void** ppvObject);
1762
1763     ULONG (STDMETHODCALLTYPE *AddRef)(
1764         IOleClientSite* This);
1765
1766     ULONG (STDMETHODCALLTYPE *Release)(
1767         IOleClientSite* This);
1768
1769     /*** IOleClientSite methods ***/
1770     HRESULT (STDMETHODCALLTYPE *SaveObject)(
1771         IOleClientSite* This);
1772
1773     HRESULT (STDMETHODCALLTYPE *GetMoniker)(
1774         IOleClientSite* This,
1775         DWORD dwAssign,
1776         DWORD dwWhichMoniker,
1777         IMoniker** ppmk);
1778
1779     HRESULT (STDMETHODCALLTYPE *GetContainer)(
1780         IOleClientSite* This,
1781         IOleContainer** ppContainer);
1782
1783     HRESULT (STDMETHODCALLTYPE *ShowObject)(
1784         IOleClientSite* This);
1785
1786     HRESULT (STDMETHODCALLTYPE *OnShowWindow)(
1787         IOleClientSite* This,
1788         BOOL fShow);
1789
1790     HRESULT (STDMETHODCALLTYPE *RequestNewObjectLayout)(
1791         IOleClientSite* This);
1792
1793 };
1794
1795 /*** IUnknown methods ***/
1796 #define IOleClientSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1797 #define IOleClientSite_AddRef(p) (p)->lpVtbl->AddRef(p)
1798 #define IOleClientSite_Release(p) (p)->lpVtbl->Release(p)
1799 /*** IOleClientSite methods ***/
1800 #define IOleClientSite_SaveObject(p) (p)->lpVtbl->SaveObject(p)
1801 #define IOleClientSite_GetMoniker(p,a,b,c) (p)->lpVtbl->GetMoniker(p,a,b,c)
1802 #define IOleClientSite_GetContainer(p,a) (p)->lpVtbl->GetContainer(p,a)
1803 #define IOleClientSite_ShowObject(p) (p)->lpVtbl->ShowObject(p)
1804 #define IOleClientSite_OnShowWindow(p,a) (p)->lpVtbl->OnShowWindow(p,a)
1805 #define IOleClientSite_RequestNewObjectLayout(p) (p)->lpVtbl->RequestNewObjectLayout(p)
1806
1807 #endif
1808
1809 #define IOleClientSite_METHODS \
1810     ICOM_MSVTABLE_COMPAT_FIELDS \
1811     /*** IUnknown methods ***/ \
1812     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1813     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1814     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1815     /*** IOleClientSite methods ***/ \
1816     STDMETHOD_(HRESULT,SaveObject)(THIS) PURE; \
1817     STDMETHOD_(HRESULT,GetMoniker)(THIS_ DWORD dwAssign, DWORD dwWhichMoniker, IMoniker** ppmk) PURE; \
1818     STDMETHOD_(HRESULT,GetContainer)(THIS_ IOleContainer** ppContainer) PURE; \
1819     STDMETHOD_(HRESULT,ShowObject)(THIS) PURE; \
1820     STDMETHOD_(HRESULT,OnShowWindow)(THIS_ BOOL fShow) PURE; \
1821     STDMETHOD_(HRESULT,RequestNewObjectLayout)(THIS) PURE;
1822
1823 HRESULT CALLBACK IOleClientSite_SaveObject_Proxy(
1824     IOleClientSite* This);
1825 void __RPC_STUB IOleClientSite_SaveObject_Stub(
1826     struct IRpcStubBuffer* This,
1827     struct IRpcChannelBuffer* pRpcChannelBuffer,
1828     PRPC_MESSAGE pRpcMessage,
1829     DWORD* pdwStubPhase);
1830 HRESULT CALLBACK IOleClientSite_GetMoniker_Proxy(
1831     IOleClientSite* This,
1832     DWORD dwAssign,
1833     DWORD dwWhichMoniker,
1834     IMoniker** ppmk);
1835 void __RPC_STUB IOleClientSite_GetMoniker_Stub(
1836     struct IRpcStubBuffer* This,
1837     struct IRpcChannelBuffer* pRpcChannelBuffer,
1838     PRPC_MESSAGE pRpcMessage,
1839     DWORD* pdwStubPhase);
1840 HRESULT CALLBACK IOleClientSite_GetContainer_Proxy(
1841     IOleClientSite* This,
1842     IOleContainer** ppContainer);
1843 void __RPC_STUB IOleClientSite_GetContainer_Stub(
1844     struct IRpcStubBuffer* This,
1845     struct IRpcChannelBuffer* pRpcChannelBuffer,
1846     PRPC_MESSAGE pRpcMessage,
1847     DWORD* pdwStubPhase);
1848 HRESULT CALLBACK IOleClientSite_ShowObject_Proxy(
1849     IOleClientSite* This);
1850 void __RPC_STUB IOleClientSite_ShowObject_Stub(
1851     struct IRpcStubBuffer* This,
1852     struct IRpcChannelBuffer* pRpcChannelBuffer,
1853     PRPC_MESSAGE pRpcMessage,
1854     DWORD* pdwStubPhase);
1855 HRESULT CALLBACK IOleClientSite_OnShowWindow_Proxy(
1856     IOleClientSite* This,
1857     BOOL fShow);
1858 void __RPC_STUB IOleClientSite_OnShowWindow_Stub(
1859     struct IRpcStubBuffer* This,
1860     struct IRpcChannelBuffer* pRpcChannelBuffer,
1861     PRPC_MESSAGE pRpcMessage,
1862     DWORD* pdwStubPhase);
1863 HRESULT CALLBACK IOleClientSite_RequestNewObjectLayout_Proxy(
1864     IOleClientSite* This);
1865 void __RPC_STUB IOleClientSite_RequestNewObjectLayout_Stub(
1866     struct IRpcStubBuffer* This,
1867     struct IRpcChannelBuffer* pRpcChannelBuffer,
1868     PRPC_MESSAGE pRpcMessage,
1869     DWORD* pdwStubPhase);
1870
1871 #endif  /* __IOleClientSite_INTERFACE_DEFINED__ */
1872
1873 #ifndef __IOleCache_FWD_DEFINED__
1874 #define __IOleCache_FWD_DEFINED__
1875 typedef struct IOleCache IOleCache;
1876 #endif
1877
1878 typedef IOleCache *LPOLECACHE;
1879
1880 /*****************************************************************************
1881  * IOleCache interface
1882  */
1883 #ifndef __IOleCache_INTERFACE_DEFINED__
1884 #define __IOleCache_INTERFACE_DEFINED__
1885
1886 DEFINE_GUID(IID_IOleCache, 0x0000011e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1887 #if defined(__cplusplus) && !defined(CINTERFACE)
1888 struct IOleCache : public IUnknown
1889 {
1890     virtual HRESULT STDMETHODCALLTYPE Cache(
1891         FORMATETC* pformatetc,
1892         DWORD advf,
1893         DWORD* pdwConnection) = 0;
1894
1895     virtual HRESULT STDMETHODCALLTYPE Uncache(
1896         DWORD dwConnection) = 0;
1897
1898     virtual HRESULT STDMETHODCALLTYPE EnumCache(
1899         IEnumSTATDATA** ppenumSTATDATA) = 0;
1900
1901     virtual HRESULT STDMETHODCALLTYPE InitCache(
1902         IDataObject* pDataObject) = 0;
1903
1904     virtual HRESULT STDMETHODCALLTYPE SetData(
1905         FORMATETC* pformatetc,
1906         STGMEDIUM* pmedium,
1907         BOOL fRelease) = 0;
1908
1909 };
1910 #else
1911 typedef struct IOleCacheVtbl IOleCacheVtbl;
1912 struct IOleCache {
1913     const IOleCacheVtbl* lpVtbl;
1914 };
1915 struct IOleCacheVtbl {
1916     ICOM_MSVTABLE_COMPAT_FIELDS
1917
1918     /*** IUnknown methods ***/
1919     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1920         IOleCache* This,
1921         REFIID riid,
1922         void** ppvObject);
1923
1924     ULONG (STDMETHODCALLTYPE *AddRef)(
1925         IOleCache* This);
1926
1927     ULONG (STDMETHODCALLTYPE *Release)(
1928         IOleCache* This);
1929
1930     /*** IOleCache methods ***/
1931     HRESULT (STDMETHODCALLTYPE *Cache)(
1932         IOleCache* This,
1933         FORMATETC* pformatetc,
1934         DWORD advf,
1935         DWORD* pdwConnection);
1936
1937     HRESULT (STDMETHODCALLTYPE *Uncache)(
1938         IOleCache* This,
1939         DWORD dwConnection);
1940
1941     HRESULT (STDMETHODCALLTYPE *EnumCache)(
1942         IOleCache* This,
1943         IEnumSTATDATA** ppenumSTATDATA);
1944
1945     HRESULT (STDMETHODCALLTYPE *InitCache)(
1946         IOleCache* This,
1947         IDataObject* pDataObject);
1948
1949     HRESULT (STDMETHODCALLTYPE *SetData)(
1950         IOleCache* This,
1951         FORMATETC* pformatetc,
1952         STGMEDIUM* pmedium,
1953         BOOL fRelease);
1954
1955 };
1956
1957 /*** IUnknown methods ***/
1958 #define IOleCache_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1959 #define IOleCache_AddRef(p) (p)->lpVtbl->AddRef(p)
1960 #define IOleCache_Release(p) (p)->lpVtbl->Release(p)
1961 /*** IOleCache methods ***/
1962 #define IOleCache_Cache(p,a,b,c) (p)->lpVtbl->Cache(p,a,b,c)
1963 #define IOleCache_Uncache(p,a) (p)->lpVtbl->Uncache(p,a)
1964 #define IOleCache_EnumCache(p,a) (p)->lpVtbl->EnumCache(p,a)
1965 #define IOleCache_InitCache(p,a) (p)->lpVtbl->InitCache(p,a)
1966 #define IOleCache_SetData(p,a,b,c) (p)->lpVtbl->SetData(p,a,b,c)
1967
1968 #endif
1969
1970 #define IOleCache_METHODS \
1971     ICOM_MSVTABLE_COMPAT_FIELDS \
1972     /*** IUnknown methods ***/ \
1973     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1974     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1975     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1976     /*** IOleCache methods ***/ \
1977     STDMETHOD_(HRESULT,Cache)(THIS_ FORMATETC* pformatetc, DWORD advf, DWORD* pdwConnection) PURE; \
1978     STDMETHOD_(HRESULT,Uncache)(THIS_ DWORD dwConnection) PURE; \
1979     STDMETHOD_(HRESULT,EnumCache)(THIS_ IEnumSTATDATA** ppenumSTATDATA) PURE; \
1980     STDMETHOD_(HRESULT,InitCache)(THIS_ IDataObject* pDataObject) PURE; \
1981     STDMETHOD_(HRESULT,SetData)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium, BOOL fRelease) PURE;
1982
1983 HRESULT CALLBACK IOleCache_Cache_Proxy(
1984     IOleCache* This,
1985     FORMATETC* pformatetc,
1986     DWORD advf,
1987     DWORD* pdwConnection);
1988 void __RPC_STUB IOleCache_Cache_Stub(
1989     struct IRpcStubBuffer* This,
1990     struct IRpcChannelBuffer* pRpcChannelBuffer,
1991     PRPC_MESSAGE pRpcMessage,
1992     DWORD* pdwStubPhase);
1993 HRESULT CALLBACK IOleCache_Uncache_Proxy(
1994     IOleCache* This,
1995     DWORD dwConnection);
1996 void __RPC_STUB IOleCache_Uncache_Stub(
1997     struct IRpcStubBuffer* This,
1998     struct IRpcChannelBuffer* pRpcChannelBuffer,
1999     PRPC_MESSAGE pRpcMessage,
2000     DWORD* pdwStubPhase);
2001 HRESULT CALLBACK IOleCache_EnumCache_Proxy(
2002     IOleCache* This,
2003     IEnumSTATDATA** ppenumSTATDATA);
2004 void __RPC_STUB IOleCache_EnumCache_Stub(
2005     struct IRpcStubBuffer* This,
2006     struct IRpcChannelBuffer* pRpcChannelBuffer,
2007     PRPC_MESSAGE pRpcMessage,
2008     DWORD* pdwStubPhase);
2009 HRESULT CALLBACK IOleCache_InitCache_Proxy(
2010     IOleCache* This,
2011     IDataObject* pDataObject);
2012 void __RPC_STUB IOleCache_InitCache_Stub(
2013     struct IRpcStubBuffer* This,
2014     struct IRpcChannelBuffer* pRpcChannelBuffer,
2015     PRPC_MESSAGE pRpcMessage,
2016     DWORD* pdwStubPhase);
2017 HRESULT CALLBACK IOleCache_SetData_Proxy(
2018     IOleCache* This,
2019     FORMATETC* pformatetc,
2020     STGMEDIUM* pmedium,
2021     BOOL fRelease);
2022 void __RPC_STUB IOleCache_SetData_Stub(
2023     struct IRpcStubBuffer* This,
2024     struct IRpcChannelBuffer* pRpcChannelBuffer,
2025     PRPC_MESSAGE pRpcMessage,
2026     DWORD* pdwStubPhase);
2027
2028 #endif  /* __IOleCache_INTERFACE_DEFINED__ */
2029
2030 #ifndef __IOleCache2_FWD_DEFINED__
2031 #define __IOleCache2_FWD_DEFINED__
2032 typedef struct IOleCache2 IOleCache2;
2033 #endif
2034
2035 typedef IOleCache2 *LPOLECACHE2;
2036
2037 #define UPDFCACHE_NODATACACHE (0x1)
2038
2039 #define UPDFCACHE_ONSAVECACHE (0x2)
2040
2041 #define UPDFCACHE_ONSTOPCACHE (0x4)
2042
2043 #define UPDFCACHE_NORMALCACHE (0x8)
2044
2045 #define UPDFCACHE_IFBLANK (0x10)
2046
2047 #define UPDFCACHE_ONLYIFBLANK (0x80000000)
2048
2049 #define UPDFCACHE_IFBLANKORONSAVECACHE (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE)
2050
2051 #define UPDFCACHE_ALL ((DWORD)~UPDFCACHE_ONLYIFBLANK)
2052
2053 #define UPDFCACHE_ALLBUTNODATACACHE (UPDFCACHE_ALL & (DWORD)~UPDFCACHE_NODATACACHE)
2054
2055 typedef enum tagDISCARDCACHE {
2056     DISCARDCACHE_SAVEIFDIRTY = 0,
2057     DISCARDCACHE_NOSAVE = 1
2058 } DISCARDCACHE;
2059
2060 /*****************************************************************************
2061  * IOleCache2 interface
2062  */
2063 #ifndef __IOleCache2_INTERFACE_DEFINED__
2064 #define __IOleCache2_INTERFACE_DEFINED__
2065
2066 DEFINE_GUID(IID_IOleCache2, 0x00000128, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2067 #if defined(__cplusplus) && !defined(CINTERFACE)
2068 struct IOleCache2 : public IOleCache
2069 {
2070     virtual HRESULT STDMETHODCALLTYPE UpdateCache(
2071         LPDATAOBJECT pDataObject,
2072         DWORD grfUpdf,
2073         LPVOID pReserved) = 0;
2074
2075     virtual HRESULT STDMETHODCALLTYPE DiscardCache(
2076         DWORD dwDiscardOptions) = 0;
2077
2078 };
2079 #else
2080 typedef struct IOleCache2Vtbl IOleCache2Vtbl;
2081 struct IOleCache2 {
2082     const IOleCache2Vtbl* lpVtbl;
2083 };
2084 struct IOleCache2Vtbl {
2085     ICOM_MSVTABLE_COMPAT_FIELDS
2086
2087     /*** IUnknown methods ***/
2088     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2089         IOleCache2* This,
2090         REFIID riid,
2091         void** ppvObject);
2092
2093     ULONG (STDMETHODCALLTYPE *AddRef)(
2094         IOleCache2* This);
2095
2096     ULONG (STDMETHODCALLTYPE *Release)(
2097         IOleCache2* This);
2098
2099     /*** IOleCache methods ***/
2100     HRESULT (STDMETHODCALLTYPE *Cache)(
2101         IOleCache2* This,
2102         FORMATETC* pformatetc,
2103         DWORD advf,
2104         DWORD* pdwConnection);
2105
2106     HRESULT (STDMETHODCALLTYPE *Uncache)(
2107         IOleCache2* This,
2108         DWORD dwConnection);
2109
2110     HRESULT (STDMETHODCALLTYPE *EnumCache)(
2111         IOleCache2* This,
2112         IEnumSTATDATA** ppenumSTATDATA);
2113
2114     HRESULT (STDMETHODCALLTYPE *InitCache)(
2115         IOleCache2* This,
2116         IDataObject* pDataObject);
2117
2118     HRESULT (STDMETHODCALLTYPE *SetData)(
2119         IOleCache2* This,
2120         FORMATETC* pformatetc,
2121         STGMEDIUM* pmedium,
2122         BOOL fRelease);
2123
2124     /*** IOleCache2 methods ***/
2125     HRESULT (STDMETHODCALLTYPE *UpdateCache)(
2126         IOleCache2* This,
2127         LPDATAOBJECT pDataObject,
2128         DWORD grfUpdf,
2129         LPVOID pReserved);
2130
2131     HRESULT (STDMETHODCALLTYPE *DiscardCache)(
2132         IOleCache2* This,
2133         DWORD dwDiscardOptions);
2134
2135 };
2136
2137 /*** IUnknown methods ***/
2138 #define IOleCache2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2139 #define IOleCache2_AddRef(p) (p)->lpVtbl->AddRef(p)
2140 #define IOleCache2_Release(p) (p)->lpVtbl->Release(p)
2141 /*** IOleCache methods ***/
2142 #define IOleCache2_Cache(p,a,b,c) (p)->lpVtbl->Cache(p,a,b,c)
2143 #define IOleCache2_Uncache(p,a) (p)->lpVtbl->Uncache(p,a)
2144 #define IOleCache2_EnumCache(p,a) (p)->lpVtbl->EnumCache(p,a)
2145 #define IOleCache2_InitCache(p,a) (p)->lpVtbl->InitCache(p,a)
2146 #define IOleCache2_SetData(p,a,b,c) (p)->lpVtbl->SetData(p,a,b,c)
2147 /*** IOleCache2 methods ***/
2148 #define IOleCache2_UpdateCache(p,a,b,c) (p)->lpVtbl->UpdateCache(p,a,b,c)
2149 #define IOleCache2_DiscardCache(p,a) (p)->lpVtbl->DiscardCache(p,a)
2150
2151 #endif
2152
2153 #define IOleCache2_METHODS \
2154     ICOM_MSVTABLE_COMPAT_FIELDS \
2155     /*** IUnknown methods ***/ \
2156     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2157     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2158     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2159     /*** IOleCache methods ***/ \
2160     STDMETHOD_(HRESULT,Cache)(THIS_ FORMATETC* pformatetc, DWORD advf, DWORD* pdwConnection) PURE; \
2161     STDMETHOD_(HRESULT,Uncache)(THIS_ DWORD dwConnection) PURE; \
2162     STDMETHOD_(HRESULT,EnumCache)(THIS_ IEnumSTATDATA** ppenumSTATDATA) PURE; \
2163     STDMETHOD_(HRESULT,InitCache)(THIS_ IDataObject* pDataObject) PURE; \
2164     STDMETHOD_(HRESULT,SetData)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium, BOOL fRelease) PURE; \
2165     /*** IOleCache2 methods ***/ \
2166     STDMETHOD_(HRESULT,UpdateCache)(THIS_ LPDATAOBJECT pDataObject, DWORD grfUpdf, LPVOID pReserved) PURE; \
2167     STDMETHOD_(HRESULT,DiscardCache)(THIS_ DWORD dwDiscardOptions) PURE;
2168
2169 HRESULT CALLBACK IOleCache2_RemoteUpdateCache_Proxy(
2170     IOleCache2* This,
2171     LPDATAOBJECT pDataObject,
2172     DWORD grfUpdf,
2173     LONG_PTR pReserved);
2174 void __RPC_STUB IOleCache2_RemoteUpdateCache_Stub(
2175     struct IRpcStubBuffer* This,
2176     struct IRpcChannelBuffer* pRpcChannelBuffer,
2177     PRPC_MESSAGE pRpcMessage,
2178     DWORD* pdwStubPhase);
2179 HRESULT CALLBACK IOleCache2_UpdateCache_Proxy(
2180     IOleCache2* This,
2181     LPDATAOBJECT pDataObject,
2182     DWORD grfUpdf,
2183     LPVOID pReserved);
2184 HRESULT __RPC_STUB IOleCache2_UpdateCache_Stub(
2185     IOleCache2* This,
2186     LPDATAOBJECT pDataObject,
2187     DWORD grfUpdf,
2188     LONG_PTR pReserved);
2189 HRESULT CALLBACK IOleCache2_DiscardCache_Proxy(
2190     IOleCache2* This,
2191     DWORD dwDiscardOptions);
2192 void __RPC_STUB IOleCache2_DiscardCache_Stub(
2193     struct IRpcStubBuffer* This,
2194     struct IRpcChannelBuffer* pRpcChannelBuffer,
2195     PRPC_MESSAGE pRpcMessage,
2196     DWORD* pdwStubPhase);
2197
2198 #endif  /* __IOleCache2_INTERFACE_DEFINED__ */
2199
2200 #ifndef __IOleCacheControl_FWD_DEFINED__
2201 #define __IOleCacheControl_FWD_DEFINED__
2202 typedef struct IOleCacheControl IOleCacheControl;
2203 #endif
2204
2205 typedef IOleCacheControl *LPOLECACHECONTROL;
2206
2207 /*****************************************************************************
2208  * IOleCacheControl interface
2209  */
2210 #ifndef __IOleCacheControl_INTERFACE_DEFINED__
2211 #define __IOleCacheControl_INTERFACE_DEFINED__
2212
2213 DEFINE_GUID(IID_IOleCacheControl, 0x00000129, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2214 #if defined(__cplusplus) && !defined(CINTERFACE)
2215 struct IOleCacheControl : public IUnknown
2216 {
2217     virtual HRESULT STDMETHODCALLTYPE OnRun(
2218         LPDATAOBJECT pDataObject) = 0;
2219
2220     virtual HRESULT STDMETHODCALLTYPE OnStop(
2221         ) = 0;
2222
2223 };
2224 #else
2225 typedef struct IOleCacheControlVtbl IOleCacheControlVtbl;
2226 struct IOleCacheControl {
2227     const IOleCacheControlVtbl* lpVtbl;
2228 };
2229 struct IOleCacheControlVtbl {
2230     ICOM_MSVTABLE_COMPAT_FIELDS
2231
2232     /*** IUnknown methods ***/
2233     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2234         IOleCacheControl* This,
2235         REFIID riid,
2236         void** ppvObject);
2237
2238     ULONG (STDMETHODCALLTYPE *AddRef)(
2239         IOleCacheControl* This);
2240
2241     ULONG (STDMETHODCALLTYPE *Release)(
2242         IOleCacheControl* This);
2243
2244     /*** IOleCacheControl methods ***/
2245     HRESULT (STDMETHODCALLTYPE *OnRun)(
2246         IOleCacheControl* This,
2247         LPDATAOBJECT pDataObject);
2248
2249     HRESULT (STDMETHODCALLTYPE *OnStop)(
2250         IOleCacheControl* This);
2251
2252 };
2253
2254 /*** IUnknown methods ***/
2255 #define IOleCacheControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2256 #define IOleCacheControl_AddRef(p) (p)->lpVtbl->AddRef(p)
2257 #define IOleCacheControl_Release(p) (p)->lpVtbl->Release(p)
2258 /*** IOleCacheControl methods ***/
2259 #define IOleCacheControl_OnRun(p,a) (p)->lpVtbl->OnRun(p,a)
2260 #define IOleCacheControl_OnStop(p) (p)->lpVtbl->OnStop(p)
2261
2262 #endif
2263
2264 #define IOleCacheControl_METHODS \
2265     ICOM_MSVTABLE_COMPAT_FIELDS \
2266     /*** IUnknown methods ***/ \
2267     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2268     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2269     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2270     /*** IOleCacheControl methods ***/ \
2271     STDMETHOD_(HRESULT,OnRun)(THIS_ LPDATAOBJECT pDataObject) PURE; \
2272     STDMETHOD_(HRESULT,OnStop)(THIS) PURE;
2273
2274 HRESULT CALLBACK IOleCacheControl_OnRun_Proxy(
2275     IOleCacheControl* This,
2276     LPDATAOBJECT pDataObject);
2277 void __RPC_STUB IOleCacheControl_OnRun_Stub(
2278     struct IRpcStubBuffer* This,
2279     struct IRpcChannelBuffer* pRpcChannelBuffer,
2280     PRPC_MESSAGE pRpcMessage,
2281     DWORD* pdwStubPhase);
2282 HRESULT CALLBACK IOleCacheControl_OnStop_Proxy(
2283     IOleCacheControl* This);
2284 void __RPC_STUB IOleCacheControl_OnStop_Stub(
2285     struct IRpcStubBuffer* This,
2286     struct IRpcChannelBuffer* pRpcChannelBuffer,
2287     PRPC_MESSAGE pRpcMessage,
2288     DWORD* pdwStubPhase);
2289
2290 #endif  /* __IOleCacheControl_INTERFACE_DEFINED__ */
2291
2292 #ifndef __IEnumOLEVERB_FWD_DEFINED__
2293 #define __IEnumOLEVERB_FWD_DEFINED__
2294 typedef struct IEnumOLEVERB IEnumOLEVERB;
2295 #endif
2296
2297 typedef IEnumOLEVERB *LPENUMOLEVERB;
2298
2299 typedef struct tagOLEVERB {
2300     LONG lVerb;
2301     LPOLESTR lpszVerbName;
2302     DWORD fuFlags;
2303     DWORD grfAttribs;
2304 } OLEVERB, *LPOLEVERB;
2305
2306 typedef enum tagOLEVERBATTRIB {
2307     OLEVERBATTRIB_NEVERDIRTIES = 1,
2308     OLEVERBATTRIB_ONCONTAINERMENU = 2
2309 } OLEVERBATTRIB;
2310
2311 /*****************************************************************************
2312  * IEnumOLEVERB interface
2313  */
2314 #ifndef __IEnumOLEVERB_INTERFACE_DEFINED__
2315 #define __IEnumOLEVERB_INTERFACE_DEFINED__
2316
2317 DEFINE_GUID(IID_IEnumOLEVERB, 0x00000104, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2318 #if defined(__cplusplus) && !defined(CINTERFACE)
2319 struct IEnumOLEVERB : public IUnknown
2320 {
2321     virtual HRESULT STDMETHODCALLTYPE Next(
2322         ULONG celt,
2323         LPOLEVERB rgelt,
2324         ULONG* pceltFetched) = 0;
2325
2326     virtual HRESULT STDMETHODCALLTYPE Skip(
2327         ULONG celt) = 0;
2328
2329     virtual HRESULT STDMETHODCALLTYPE Reset(
2330         ) = 0;
2331
2332     virtual HRESULT STDMETHODCALLTYPE Clone(
2333         IEnumOLEVERB** ppenum) = 0;
2334
2335 };
2336 #else
2337 typedef struct IEnumOLEVERBVtbl IEnumOLEVERBVtbl;
2338 struct IEnumOLEVERB {
2339     const IEnumOLEVERBVtbl* lpVtbl;
2340 };
2341 struct IEnumOLEVERBVtbl {
2342     ICOM_MSVTABLE_COMPAT_FIELDS
2343
2344     /*** IUnknown methods ***/
2345     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2346         IEnumOLEVERB* This,
2347         REFIID riid,
2348         void** ppvObject);
2349
2350     ULONG (STDMETHODCALLTYPE *AddRef)(
2351         IEnumOLEVERB* This);
2352
2353     ULONG (STDMETHODCALLTYPE *Release)(
2354         IEnumOLEVERB* This);
2355
2356     /*** IEnumOLEVERB methods ***/
2357     HRESULT (STDMETHODCALLTYPE *Next)(
2358         IEnumOLEVERB* This,
2359         ULONG celt,
2360         LPOLEVERB rgelt,
2361         ULONG* pceltFetched);
2362
2363     HRESULT (STDMETHODCALLTYPE *Skip)(
2364         IEnumOLEVERB* This,
2365         ULONG celt);
2366
2367     HRESULT (STDMETHODCALLTYPE *Reset)(
2368         IEnumOLEVERB* This);
2369
2370     HRESULT (STDMETHODCALLTYPE *Clone)(
2371         IEnumOLEVERB* This,
2372         IEnumOLEVERB** ppenum);
2373
2374 };
2375
2376 /*** IUnknown methods ***/
2377 #define IEnumOLEVERB_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2378 #define IEnumOLEVERB_AddRef(p) (p)->lpVtbl->AddRef(p)
2379 #define IEnumOLEVERB_Release(p) (p)->lpVtbl->Release(p)
2380 /*** IEnumOLEVERB methods ***/
2381 #define IEnumOLEVERB_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
2382 #define IEnumOLEVERB_Skip(p,a) (p)->lpVtbl->Skip(p,a)
2383 #define IEnumOLEVERB_Reset(p) (p)->lpVtbl->Reset(p)
2384 #define IEnumOLEVERB_Clone(p,a) (p)->lpVtbl->Clone(p,a)
2385
2386 #endif
2387
2388 #define IEnumOLEVERB_METHODS \
2389     ICOM_MSVTABLE_COMPAT_FIELDS \
2390     /*** IUnknown methods ***/ \
2391     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2392     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2393     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2394     /*** IEnumOLEVERB methods ***/ \
2395     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, LPOLEVERB rgelt, ULONG* pceltFetched) PURE; \
2396     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
2397     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
2398     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumOLEVERB** ppenum) PURE;
2399
2400 HRESULT CALLBACK IEnumOLEVERB_RemoteNext_Proxy(
2401     IEnumOLEVERB* This,
2402     ULONG celt,
2403     LPOLEVERB rgelt,
2404     ULONG* pceltFetched);
2405 void __RPC_STUB IEnumOLEVERB_RemoteNext_Stub(
2406     struct IRpcStubBuffer* This,
2407     struct IRpcChannelBuffer* pRpcChannelBuffer,
2408     PRPC_MESSAGE pRpcMessage,
2409     DWORD* pdwStubPhase);
2410 HRESULT CALLBACK IEnumOLEVERB_Next_Proxy(
2411     IEnumOLEVERB* This,
2412     ULONG celt,
2413     LPOLEVERB rgelt,
2414     ULONG* pceltFetched);
2415 HRESULT __RPC_STUB IEnumOLEVERB_Next_Stub(
2416     IEnumOLEVERB* This,
2417     ULONG celt,
2418     LPOLEVERB rgelt,
2419     ULONG* pceltFetched);
2420 HRESULT CALLBACK IEnumOLEVERB_Skip_Proxy(
2421     IEnumOLEVERB* This,
2422     ULONG celt);
2423 void __RPC_STUB IEnumOLEVERB_Skip_Stub(
2424     struct IRpcStubBuffer* This,
2425     struct IRpcChannelBuffer* pRpcChannelBuffer,
2426     PRPC_MESSAGE pRpcMessage,
2427     DWORD* pdwStubPhase);
2428 HRESULT CALLBACK IEnumOLEVERB_Reset_Proxy(
2429     IEnumOLEVERB* This);
2430 void __RPC_STUB IEnumOLEVERB_Reset_Stub(
2431     struct IRpcStubBuffer* This,
2432     struct IRpcChannelBuffer* pRpcChannelBuffer,
2433     PRPC_MESSAGE pRpcMessage,
2434     DWORD* pdwStubPhase);
2435 HRESULT CALLBACK IEnumOLEVERB_Clone_Proxy(
2436     IEnumOLEVERB* This,
2437     IEnumOLEVERB** ppenum);
2438 void __RPC_STUB IEnumOLEVERB_Clone_Stub(
2439     struct IRpcStubBuffer* This,
2440     struct IRpcChannelBuffer* pRpcChannelBuffer,
2441     PRPC_MESSAGE pRpcMessage,
2442     DWORD* pdwStubPhase);
2443
2444 #endif  /* __IEnumOLEVERB_INTERFACE_DEFINED__ */
2445
2446 #ifndef __IOleObject_FWD_DEFINED__
2447 #define __IOleObject_FWD_DEFINED__
2448 typedef struct IOleObject IOleObject;
2449 #endif
2450
2451 typedef IOleObject *LPOLEOBJECT;
2452
2453 typedef enum tagOLEGETMONIKER {
2454     OLEGETMONIKER_ONLYIFTHERE = 1,
2455     OLEGETMONIKER_FORCEASSIGN = 2,
2456     OLEGETMONIKER_UNASSIGN = 3,
2457     OLEGETMONIKER_TEMPFORUSER = 4
2458 } OLEGETMONIKER;
2459
2460 typedef enum tagOLEWHICHMK {
2461     OLEWHICHMK_CONTAINER = 1,
2462     OLEWHICHMK_OBJREL = 2,
2463     OLEWHICHMK_OBJFULL = 3
2464 } OLEWHICHMK;
2465
2466 typedef enum tagUSERCLASSTYPE {
2467     USERCLASSTYPE_FULL = 1,
2468     USERCLASSTYPE_SHORT = 2,
2469     USERCLASSTYPE_APPNAME = 3
2470 } USERCLASSTYPE;
2471
2472 typedef enum tagOLEMISC {
2473     OLEMISC_RECOMPOSEONRESIZE = 0x1,
2474     OLEMISC_ONLYICONIC = 0x2,
2475     OLEMISC_INSERTNOTREPLACE = 0x4,
2476     OLEMISC_STATIC = 0x8,
2477     OLEMISC_CANTLINKINSIDE = 0x10,
2478     OLEMISC_CANLINKBYOLE1 = 0x20,
2479     OLEMISC_ISLINKOBJECT = 0x40,
2480     OLEMISC_INSIDEOUT = 0x80,
2481     OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
2482     OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
2483     OLEMISC_INVISIBLEATRUNTIME = 0x400,
2484     OLEMISC_ALWAYSRUN = 0x800,
2485     OLEMISC_ACTSLIKEBUTTON = 0x1000,
2486     OLEMISC_ACTSLIKELABEL = 0x2000,
2487     OLEMISC_NOUIACTIVATE = 0x4000,
2488     OLEMISC_ALIGNABLE = 0x8000,
2489     OLEMISC_SIMPLEFRAME = 0x10000,
2490     OLEMISC_SETCLIENTSITEFIRST = 0x20000,
2491     OLEMISC_IMEMODE = 0x40000,
2492     OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
2493     OLEMISC_WANTSTOMENUMERGE = 0x100000,
2494     OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
2495 } OLEMISC;
2496
2497 typedef enum tagOLECLOSE {
2498     OLECLOSE_SAVEIFDIRTY = 0,
2499     OLECLOSE_NOSAVE = 1,
2500     OLECLOSE_PROMPTSAVE = 2
2501 } OLECLOSE;
2502
2503 /*****************************************************************************
2504  * IOleObject interface
2505  */
2506 #ifndef __IOleObject_INTERFACE_DEFINED__
2507 #define __IOleObject_INTERFACE_DEFINED__
2508
2509 DEFINE_GUID(IID_IOleObject, 0x00000112, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2510 #if defined(__cplusplus) && !defined(CINTERFACE)
2511 struct IOleObject : public IUnknown
2512 {
2513     virtual HRESULT STDMETHODCALLTYPE SetClientSite(
2514         IOleClientSite* pClientSite) = 0;
2515
2516     virtual HRESULT STDMETHODCALLTYPE GetClientSite(
2517         IOleClientSite** ppClientSite) = 0;
2518
2519     virtual HRESULT STDMETHODCALLTYPE SetHostNames(
2520         LPCOLESTR szContainerApp,
2521         LPCOLESTR szContainerObj) = 0;
2522
2523     virtual HRESULT STDMETHODCALLTYPE Close(
2524         DWORD dwSaveOption) = 0;
2525
2526     virtual HRESULT STDMETHODCALLTYPE SetMoniker(
2527         DWORD dwWhichMoniker,
2528         IMoniker* pmk) = 0;
2529
2530     virtual HRESULT STDMETHODCALLTYPE GetMoniker(
2531         DWORD dwAssign,
2532         DWORD dwWhichMoniker,
2533         IMoniker** ppmk) = 0;
2534
2535     virtual HRESULT STDMETHODCALLTYPE InitFromData(
2536         IDataObject* pDataObject,
2537         BOOL fCreation,
2538         DWORD dwReserved) = 0;
2539
2540     virtual HRESULT STDMETHODCALLTYPE GetClipboardData(
2541         DWORD dwReserved,
2542         IDataObject** ppDataObject) = 0;
2543
2544     virtual HRESULT STDMETHODCALLTYPE DoVerb(
2545         LONG iVerb,
2546         struct tagMSG* lpmsg,
2547         IOleClientSite* pActiveSite,
2548         LONG lindex,
2549         HWND hwndParent,
2550         LPCRECT lprcPosRect) = 0;
2551
2552     virtual HRESULT STDMETHODCALLTYPE EnumVerbs(
2553         IEnumOLEVERB** ppEnumOleVerb) = 0;
2554
2555     virtual HRESULT STDMETHODCALLTYPE Update(
2556         ) = 0;
2557
2558     virtual HRESULT STDMETHODCALLTYPE IsUpToDate(
2559         ) = 0;
2560
2561     virtual HRESULT STDMETHODCALLTYPE GetUserClassID(
2562         CLSID* pClsid) = 0;
2563
2564     virtual HRESULT STDMETHODCALLTYPE GetUserType(
2565         DWORD dwFormOfType,
2566         LPOLESTR* pszUserType) = 0;
2567
2568     virtual HRESULT STDMETHODCALLTYPE SetExtent(
2569         DWORD dwDrawAspect,
2570         SIZEL* psizel) = 0;
2571
2572     virtual HRESULT STDMETHODCALLTYPE GetExtent(
2573         DWORD dwDrawAspect,
2574         SIZEL* psizel) = 0;
2575
2576     virtual HRESULT STDMETHODCALLTYPE Advise(
2577         IAdviseSink* pAdvSink,
2578         DWORD* pdwConnection) = 0;
2579
2580     virtual HRESULT STDMETHODCALLTYPE Unadvise(
2581         DWORD dwConnection) = 0;
2582
2583     virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
2584         IEnumSTATDATA** ppenumAdvise) = 0;
2585
2586     virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(
2587         DWORD dwAspect,
2588         DWORD* pdwStatus) = 0;
2589
2590     virtual HRESULT STDMETHODCALLTYPE SetColorScheme(
2591         LOGPALETTE* pLogpal) = 0;
2592
2593 };
2594 #else
2595 typedef struct IOleObjectVtbl IOleObjectVtbl;
2596 struct IOleObject {
2597     const IOleObjectVtbl* lpVtbl;
2598 };
2599 struct IOleObjectVtbl {
2600     ICOM_MSVTABLE_COMPAT_FIELDS
2601
2602     /*** IUnknown methods ***/
2603     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2604         IOleObject* This,
2605         REFIID riid,
2606         void** ppvObject);
2607
2608     ULONG (STDMETHODCALLTYPE *AddRef)(
2609         IOleObject* This);
2610
2611     ULONG (STDMETHODCALLTYPE *Release)(
2612         IOleObject* This);
2613
2614     /*** IOleObject methods ***/
2615     HRESULT (STDMETHODCALLTYPE *SetClientSite)(
2616         IOleObject* This,
2617         IOleClientSite* pClientSite);
2618
2619     HRESULT (STDMETHODCALLTYPE *GetClientSite)(
2620         IOleObject* This,
2621         IOleClientSite** ppClientSite);
2622
2623     HRESULT (STDMETHODCALLTYPE *SetHostNames)(
2624         IOleObject* This,
2625         LPCOLESTR szContainerApp,
2626         LPCOLESTR szContainerObj);
2627
2628     HRESULT (STDMETHODCALLTYPE *Close)(
2629         IOleObject* This,
2630         DWORD dwSaveOption);
2631
2632     HRESULT (STDMETHODCALLTYPE *SetMoniker)(
2633         IOleObject* This,
2634         DWORD dwWhichMoniker,
2635         IMoniker* pmk);
2636
2637     HRESULT (STDMETHODCALLTYPE *GetMoniker)(
2638         IOleObject* This,
2639         DWORD dwAssign,
2640         DWORD dwWhichMoniker,
2641         IMoniker** ppmk);
2642
2643     HRESULT (STDMETHODCALLTYPE *InitFromData)(
2644         IOleObject* This,
2645         IDataObject* pDataObject,
2646         BOOL fCreation,
2647         DWORD dwReserved);
2648
2649     HRESULT (STDMETHODCALLTYPE *GetClipboardData)(
2650         IOleObject* This,
2651         DWORD dwReserved,
2652         IDataObject** ppDataObject);
2653
2654     HRESULT (STDMETHODCALLTYPE *DoVerb)(
2655         IOleObject* This,
2656         LONG iVerb,
2657         struct tagMSG* lpmsg,
2658         IOleClientSite* pActiveSite,
2659         LONG lindex,
2660         HWND hwndParent,
2661         LPCRECT lprcPosRect);
2662
2663     HRESULT (STDMETHODCALLTYPE *EnumVerbs)(
2664         IOleObject* This,
2665         IEnumOLEVERB** ppEnumOleVerb);
2666
2667     HRESULT (STDMETHODCALLTYPE *Update)(
2668         IOleObject* This);
2669
2670     HRESULT (STDMETHODCALLTYPE *IsUpToDate)(
2671         IOleObject* This);
2672
2673     HRESULT (STDMETHODCALLTYPE *GetUserClassID)(
2674         IOleObject* This,
2675         CLSID* pClsid);
2676
2677     HRESULT (STDMETHODCALLTYPE *GetUserType)(
2678         IOleObject* This,
2679         DWORD dwFormOfType,
2680         LPOLESTR* pszUserType);
2681
2682     HRESULT (STDMETHODCALLTYPE *SetExtent)(
2683         IOleObject* This,
2684         DWORD dwDrawAspect,
2685         SIZEL* psizel);
2686
2687     HRESULT (STDMETHODCALLTYPE *GetExtent)(
2688         IOleObject* This,
2689         DWORD dwDrawAspect,
2690         SIZEL* psizel);
2691
2692     HRESULT (STDMETHODCALLTYPE *Advise)(
2693         IOleObject* This,
2694         IAdviseSink* pAdvSink,
2695         DWORD* pdwConnection);
2696
2697     HRESULT (STDMETHODCALLTYPE *Unadvise)(
2698         IOleObject* This,
2699         DWORD dwConnection);
2700
2701     HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
2702         IOleObject* This,
2703         IEnumSTATDATA** ppenumAdvise);
2704
2705     HRESULT (STDMETHODCALLTYPE *GetMiscStatus)(
2706         IOleObject* This,
2707         DWORD dwAspect,
2708         DWORD* pdwStatus);
2709
2710     HRESULT (STDMETHODCALLTYPE *SetColorScheme)(
2711         IOleObject* This,
2712         LOGPALETTE* pLogpal);
2713
2714 };
2715
2716 /*** IUnknown methods ***/
2717 #define IOleObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2718 #define IOleObject_AddRef(p) (p)->lpVtbl->AddRef(p)
2719 #define IOleObject_Release(p) (p)->lpVtbl->Release(p)
2720 /*** IOleObject methods ***/
2721 #define IOleObject_SetClientSite(p,a) (p)->lpVtbl->SetClientSite(p,a)
2722 #define IOleObject_GetClientSite(p,a) (p)->lpVtbl->GetClientSite(p,a)
2723 #define IOleObject_SetHostNames(p,a,b) (p)->lpVtbl->SetHostNames(p,a,b)
2724 #define IOleObject_Close(p,a) (p)->lpVtbl->Close(p,a)
2725 #define IOleObject_SetMoniker(p,a,b) (p)->lpVtbl->SetMoniker(p,a,b)
2726 #define IOleObject_GetMoniker(p,a,b,c) (p)->lpVtbl->GetMoniker(p,a,b,c)
2727 #define IOleObject_InitFromData(p,a,b,c) (p)->lpVtbl->InitFromData(p,a,b,c)
2728 #define IOleObject_GetClipboardData(p,a,b) (p)->lpVtbl->GetClipboardData(p,a,b)
2729 #define IOleObject_DoVerb(p,a,b,c,d,e,f) (p)->lpVtbl->DoVerb(p,a,b,c,d,e,f)
2730 #define IOleObject_EnumVerbs(p,a) (p)->lpVtbl->EnumVerbs(p,a)
2731 #define IOleObject_Update(p) (p)->lpVtbl->Update(p)
2732 #define IOleObject_IsUpToDate(p) (p)->lpVtbl->IsUpToDate(p)
2733 #define IOleObject_GetUserClassID(p,a) (p)->lpVtbl->GetUserClassID(p,a)
2734 #define IOleObject_GetUserType(p,a,b) (p)->lpVtbl->GetUserType(p,a,b)
2735 #define IOleObject_SetExtent(p,a,b) (p)->lpVtbl->SetExtent(p,a,b)
2736 #define IOleObject_GetExtent(p,a,b) (p)->lpVtbl->GetExtent(p,a,b)
2737 #define IOleObject_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b)
2738 #define IOleObject_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
2739 #define IOleObject_EnumAdvise(p,a) (p)->lpVtbl->EnumAdvise(p,a)
2740 #define IOleObject_GetMiscStatus(p,a,b) (p)->lpVtbl->GetMiscStatus(p,a,b)
2741 #define IOleObject_SetColorScheme(p,a) (p)->lpVtbl->SetColorScheme(p,a)
2742
2743 #endif
2744
2745 #define IOleObject_METHODS \
2746     ICOM_MSVTABLE_COMPAT_FIELDS \
2747     /*** IUnknown methods ***/ \
2748     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2749     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2750     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2751     /*** IOleObject methods ***/ \
2752     STDMETHOD_(HRESULT,SetClientSite)(THIS_ IOleClientSite* pClientSite) PURE; \
2753     STDMETHOD_(HRESULT,GetClientSite)(THIS_ IOleClientSite** ppClientSite) PURE; \
2754     STDMETHOD_(HRESULT,SetHostNames)(THIS_ LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) PURE; \
2755     STDMETHOD_(HRESULT,Close)(THIS_ DWORD dwSaveOption) PURE; \
2756     STDMETHOD_(HRESULT,SetMoniker)(THIS_ DWORD dwWhichMoniker, IMoniker* pmk) PURE; \
2757     STDMETHOD_(HRESULT,GetMoniker)(THIS_ DWORD dwAssign, DWORD dwWhichMoniker, IMoniker** ppmk) PURE; \
2758     STDMETHOD_(HRESULT,InitFromData)(THIS_ IDataObject* pDataObject, BOOL fCreation, DWORD dwReserved) PURE; \
2759     STDMETHOD_(HRESULT,GetClipboardData)(THIS_ DWORD dwReserved, IDataObject** ppDataObject) PURE; \
2760     STDMETHOD_(HRESULT,DoVerb)(THIS_ LONG iVerb, struct tagMSG* lpmsg, IOleClientSite* pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) PURE; \
2761     STDMETHOD_(HRESULT,EnumVerbs)(THIS_ IEnumOLEVERB** ppEnumOleVerb) PURE; \
2762     STDMETHOD_(HRESULT,Update)(THIS) PURE; \
2763     STDMETHOD_(HRESULT,IsUpToDate)(THIS) PURE; \
2764     STDMETHOD_(HRESULT,GetUserClassID)(THIS_ CLSID* pClsid) PURE; \
2765     STDMETHOD_(HRESULT,GetUserType)(THIS_ DWORD dwFormOfType, LPOLESTR* pszUserType) PURE; \
2766     STDMETHOD_(HRESULT,SetExtent)(THIS_ DWORD dwDrawAspect, SIZEL* psizel) PURE; \
2767     STDMETHOD_(HRESULT,GetExtent)(THIS_ DWORD dwDrawAspect, SIZEL* psizel) PURE; \
2768     STDMETHOD_(HRESULT,Advise)(THIS_ IAdviseSink* pAdvSink, DWORD* pdwConnection) PURE; \
2769     STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD dwConnection) PURE; \
2770     STDMETHOD_(HRESULT,EnumAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE; \
2771     STDMETHOD_(HRESULT,GetMiscStatus)(THIS_ DWORD dwAspect, DWORD* pdwStatus) PURE; \
2772     STDMETHOD_(HRESULT,SetColorScheme)(THIS_ LOGPALETTE* pLogpal) PURE;
2773
2774 HRESULT CALLBACK IOleObject_SetClientSite_Proxy(
2775     IOleObject* This,
2776     IOleClientSite* pClientSite);
2777 void __RPC_STUB IOleObject_SetClientSite_Stub(
2778     struct IRpcStubBuffer* This,
2779     struct IRpcChannelBuffer* pRpcChannelBuffer,
2780     PRPC_MESSAGE pRpcMessage,
2781     DWORD* pdwStubPhase);
2782 HRESULT CALLBACK IOleObject_GetClientSite_Proxy(
2783     IOleObject* This,
2784     IOleClientSite** ppClientSite);
2785 void __RPC_STUB IOleObject_GetClientSite_Stub(
2786     struct IRpcStubBuffer* This,
2787     struct IRpcChannelBuffer* pRpcChannelBuffer,
2788     PRPC_MESSAGE pRpcMessage,
2789     DWORD* pdwStubPhase);
2790 HRESULT CALLBACK IOleObject_SetHostNames_Proxy(
2791     IOleObject* This,
2792     LPCOLESTR szContainerApp,
2793     LPCOLESTR szContainerObj);
2794 void __RPC_STUB IOleObject_SetHostNames_Stub(
2795     struct IRpcStubBuffer* This,
2796     struct IRpcChannelBuffer* pRpcChannelBuffer,
2797     PRPC_MESSAGE pRpcMessage,
2798     DWORD* pdwStubPhase);
2799 HRESULT CALLBACK IOleObject_Close_Proxy(
2800     IOleObject* This,
2801     DWORD dwSaveOption);
2802 void __RPC_STUB IOleObject_Close_Stub(
2803     struct IRpcStubBuffer* This,
2804     struct IRpcChannelBuffer* pRpcChannelBuffer,
2805     PRPC_MESSAGE pRpcMessage,
2806     DWORD* pdwStubPhase);
2807 HRESULT CALLBACK IOleObject_SetMoniker_Proxy(
2808     IOleObject* This,
2809     DWORD dwWhichMoniker,
2810     IMoniker* pmk);
2811 void __RPC_STUB IOleObject_SetMoniker_Stub(
2812     struct IRpcStubBuffer* This,
2813     struct IRpcChannelBuffer* pRpcChannelBuffer,
2814     PRPC_MESSAGE pRpcMessage,
2815     DWORD* pdwStubPhase);
2816 HRESULT CALLBACK IOleObject_GetMoniker_Proxy(
2817     IOleObject* This,
2818     DWORD dwAssign,
2819     DWORD dwWhichMoniker,
2820     IMoniker** ppmk);
2821 void __RPC_STUB IOleObject_GetMoniker_Stub(
2822     struct IRpcStubBuffer* This,
2823     struct IRpcChannelBuffer* pRpcChannelBuffer,
2824     PRPC_MESSAGE pRpcMessage,
2825     DWORD* pdwStubPhase);
2826 HRESULT CALLBACK IOleObject_InitFromData_Proxy(
2827     IOleObject* This,
2828     IDataObject* pDataObject,
2829     BOOL fCreation,
2830     DWORD dwReserved);
2831 void __RPC_STUB IOleObject_InitFromData_Stub(
2832     struct IRpcStubBuffer* This,
2833     struct IRpcChannelBuffer* pRpcChannelBuffer,
2834     PRPC_MESSAGE pRpcMessage,
2835     DWORD* pdwStubPhase);
2836 HRESULT CALLBACK IOleObject_GetClipboardData_Proxy(
2837     IOleObject* This,
2838     DWORD dwReserved,
2839     IDataObject** ppDataObject);
2840 void __RPC_STUB IOleObject_GetClipboardData_Stub(
2841     struct IRpcStubBuffer* This,
2842     struct IRpcChannelBuffer* pRpcChannelBuffer,
2843     PRPC_MESSAGE pRpcMessage,
2844     DWORD* pdwStubPhase);
2845 HRESULT CALLBACK IOleObject_DoVerb_Proxy(
2846     IOleObject* This,
2847     LONG iVerb,
2848     struct tagMSG* lpmsg,
2849     IOleClientSite* pActiveSite,
2850     LONG lindex,
2851     HWND hwndParent,
2852     LPCRECT lprcPosRect);
2853 void __RPC_STUB IOleObject_DoVerb_Stub(
2854     struct IRpcStubBuffer* This,
2855     struct IRpcChannelBuffer* pRpcChannelBuffer,
2856     PRPC_MESSAGE pRpcMessage,
2857     DWORD* pdwStubPhase);
2858 HRESULT CALLBACK IOleObject_EnumVerbs_Proxy(
2859     IOleObject* This,
2860     IEnumOLEVERB** ppEnumOleVerb);
2861 void __RPC_STUB IOleObject_EnumVerbs_Stub(
2862     struct IRpcStubBuffer* This,
2863     struct IRpcChannelBuffer* pRpcChannelBuffer,
2864     PRPC_MESSAGE pRpcMessage,
2865     DWORD* pdwStubPhase);
2866 HRESULT CALLBACK IOleObject_Update_Proxy(
2867     IOleObject* This);
2868 void __RPC_STUB IOleObject_Update_Stub(
2869     struct IRpcStubBuffer* This,
2870     struct IRpcChannelBuffer* pRpcChannelBuffer,
2871     PRPC_MESSAGE pRpcMessage,
2872     DWORD* pdwStubPhase);
2873 HRESULT CALLBACK IOleObject_IsUpToDate_Proxy(
2874     IOleObject* This);
2875 void __RPC_STUB IOleObject_IsUpToDate_Stub(
2876     struct IRpcStubBuffer* This,
2877     struct IRpcChannelBuffer* pRpcChannelBuffer,
2878     PRPC_MESSAGE pRpcMessage,
2879     DWORD* pdwStubPhase);
2880 HRESULT CALLBACK IOleObject_GetUserClassID_Proxy(
2881     IOleObject* This,
2882     CLSID* pClsid);
2883 void __RPC_STUB IOleObject_GetUserClassID_Stub(
2884     struct IRpcStubBuffer* This,
2885     struct IRpcChannelBuffer* pRpcChannelBuffer,
2886     PRPC_MESSAGE pRpcMessage,
2887     DWORD* pdwStubPhase);
2888 HRESULT CALLBACK IOleObject_GetUserType_Proxy(
2889     IOleObject* This,
2890     DWORD dwFormOfType,
2891     LPOLESTR* pszUserType);
2892 void __RPC_STUB IOleObject_GetUserType_Stub(
2893     struct IRpcStubBuffer* This,
2894     struct IRpcChannelBuffer* pRpcChannelBuffer,
2895     PRPC_MESSAGE pRpcMessage,
2896     DWORD* pdwStubPhase);
2897 HRESULT CALLBACK IOleObject_SetExtent_Proxy(
2898     IOleObject* This,
2899     DWORD dwDrawAspect,
2900     SIZEL* psizel);
2901 void __RPC_STUB IOleObject_SetExtent_Stub(
2902     struct IRpcStubBuffer* This,
2903     struct IRpcChannelBuffer* pRpcChannelBuffer,
2904     PRPC_MESSAGE pRpcMessage,
2905     DWORD* pdwStubPhase);
2906 HRESULT CALLBACK IOleObject_GetExtent_Proxy(
2907     IOleObject* This,
2908     DWORD dwDrawAspect,
2909     SIZEL* psizel);
2910 void __RPC_STUB IOleObject_GetExtent_Stub(
2911     struct IRpcStubBuffer* This,
2912     struct IRpcChannelBuffer* pRpcChannelBuffer,
2913     PRPC_MESSAGE pRpcMessage,
2914     DWORD* pdwStubPhase);
2915 HRESULT CALLBACK IOleObject_Advise_Proxy(
2916     IOleObject* This,
2917     IAdviseSink* pAdvSink,
2918     DWORD* pdwConnection);
2919 void __RPC_STUB IOleObject_Advise_Stub(
2920     struct IRpcStubBuffer* This,
2921     struct IRpcChannelBuffer* pRpcChannelBuffer,
2922     PRPC_MESSAGE pRpcMessage,
2923     DWORD* pdwStubPhase);
2924 HRESULT CALLBACK IOleObject_Unadvise_Proxy(
2925     IOleObject* This,
2926     DWORD dwConnection);
2927 void __RPC_STUB IOleObject_Unadvise_Stub(
2928     struct IRpcStubBuffer* This,
2929     struct IRpcChannelBuffer* pRpcChannelBuffer,
2930     PRPC_MESSAGE pRpcMessage,
2931     DWORD* pdwStubPhase);
2932 HRESULT CALLBACK IOleObject_EnumAdvise_Proxy(
2933     IOleObject* This,
2934     IEnumSTATDATA** ppenumAdvise);
2935 void __RPC_STUB IOleObject_EnumAdvise_Stub(
2936     struct IRpcStubBuffer* This,
2937     struct IRpcChannelBuffer* pRpcChannelBuffer,
2938     PRPC_MESSAGE pRpcMessage,
2939     DWORD* pdwStubPhase);
2940 HRESULT CALLBACK IOleObject_GetMiscStatus_Proxy(
2941     IOleObject* This,
2942     DWORD dwAspect,
2943     DWORD* pdwStatus);
2944 void __RPC_STUB IOleObject_GetMiscStatus_Stub(
2945     struct IRpcStubBuffer* This,
2946     struct IRpcChannelBuffer* pRpcChannelBuffer,
2947     PRPC_MESSAGE pRpcMessage,
2948     DWORD* pdwStubPhase);
2949 HRESULT CALLBACK IOleObject_SetColorScheme_Proxy(
2950     IOleObject* This,
2951     LOGPALETTE* pLogpal);
2952 void __RPC_STUB IOleObject_SetColorScheme_Stub(
2953     struct IRpcStubBuffer* This,
2954     struct IRpcChannelBuffer* pRpcChannelBuffer,
2955     PRPC_MESSAGE pRpcMessage,
2956     DWORD* pdwStubPhase);
2957
2958 #endif  /* __IOleObject_INTERFACE_DEFINED__ */
2959
2960 #ifndef __IOleAdviseHolder_FWD_DEFINED__
2961 #define __IOleAdviseHolder_FWD_DEFINED__
2962 typedef struct IOleAdviseHolder IOleAdviseHolder;
2963 #endif
2964
2965 typedef IOleAdviseHolder *LPOLEADVISEHOLDER;
2966
2967 /*****************************************************************************
2968  * IOleAdviseHolder interface
2969  */
2970 #ifndef __IOleAdviseHolder_INTERFACE_DEFINED__
2971 #define __IOleAdviseHolder_INTERFACE_DEFINED__
2972
2973 DEFINE_GUID(IID_IOleAdviseHolder, 0x00000111, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2974 #if defined(__cplusplus) && !defined(CINTERFACE)
2975 struct IOleAdviseHolder : public IUnknown
2976 {
2977     virtual HRESULT STDMETHODCALLTYPE Advise(
2978         IAdviseSink* pAdvise,
2979         DWORD* pdwConnection) = 0;
2980
2981     virtual HRESULT STDMETHODCALLTYPE Unadvise(
2982         DWORD dwConnection) = 0;
2983
2984     virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
2985         IEnumSTATDATA** ppenumAdvise) = 0;
2986
2987     virtual HRESULT STDMETHODCALLTYPE SendOnRename(
2988         IMoniker* pmk) = 0;
2989
2990     virtual HRESULT STDMETHODCALLTYPE SendOnSave(
2991         ) = 0;
2992
2993     virtual HRESULT STDMETHODCALLTYPE SendOnClose(
2994         ) = 0;
2995
2996 };
2997 #else
2998 typedef struct IOleAdviseHolderVtbl IOleAdviseHolderVtbl;
2999 struct IOleAdviseHolder {
3000     const IOleAdviseHolderVtbl* lpVtbl;
3001 };
3002 struct IOleAdviseHolderVtbl {
3003     ICOM_MSVTABLE_COMPAT_FIELDS
3004
3005     /*** IUnknown methods ***/
3006     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3007         IOleAdviseHolder* This,
3008         REFIID riid,
3009         void** ppvObject);
3010
3011     ULONG (STDMETHODCALLTYPE *AddRef)(
3012         IOleAdviseHolder* This);
3013
3014     ULONG (STDMETHODCALLTYPE *Release)(
3015         IOleAdviseHolder* This);
3016
3017     /*** IOleAdviseHolder methods ***/
3018     HRESULT (STDMETHODCALLTYPE *Advise)(
3019         IOleAdviseHolder* This,
3020         IAdviseSink* pAdvise,
3021         DWORD* pdwConnection);
3022
3023     HRESULT (STDMETHODCALLTYPE *Unadvise)(
3024         IOleAdviseHolder* This,
3025         DWORD dwConnection);
3026
3027     HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
3028         IOleAdviseHolder* This,
3029         IEnumSTATDATA** ppenumAdvise);
3030
3031     HRESULT (STDMETHODCALLTYPE *SendOnRename)(
3032         IOleAdviseHolder* This,
3033         IMoniker* pmk);
3034
3035     HRESULT (STDMETHODCALLTYPE *SendOnSave)(
3036         IOleAdviseHolder* This);
3037
3038     HRESULT (STDMETHODCALLTYPE *SendOnClose)(
3039         IOleAdviseHolder* This);
3040
3041 };
3042
3043 /*** IUnknown methods ***/
3044 #define IOleAdviseHolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3045 #define IOleAdviseHolder_AddRef(p) (p)->lpVtbl->AddRef(p)
3046 #define IOleAdviseHolder_Release(p) (p)->lpVtbl->Release(p)
3047 /*** IOleAdviseHolder methods ***/
3048 #define IOleAdviseHolder_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b)
3049 #define IOleAdviseHolder_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
3050 #define IOleAdviseHolder_EnumAdvise(p,a) (p)->lpVtbl->EnumAdvise(p,a)
3051 #define IOleAdviseHolder_SendOnRename(p,a) (p)->lpVtbl->SendOnRename(p,a)
3052 #define IOleAdviseHolder_SendOnSave(p) (p)->lpVtbl->SendOnSave(p)
3053 #define IOleAdviseHolder_SendOnClose(p) (p)->lpVtbl->SendOnClose(p)
3054
3055 #endif
3056
3057 #define IOleAdviseHolder_METHODS \
3058     ICOM_MSVTABLE_COMPAT_FIELDS \
3059     /*** IUnknown methods ***/ \
3060     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3061     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3062     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3063     /*** IOleAdviseHolder methods ***/ \
3064     STDMETHOD_(HRESULT,Advise)(THIS_ IAdviseSink* pAdvise, DWORD* pdwConnection) PURE; \
3065     STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD dwConnection) PURE; \
3066     STDMETHOD_(HRESULT,EnumAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE; \
3067     STDMETHOD_(HRESULT,SendOnRename)(THIS_ IMoniker* pmk) PURE; \
3068     STDMETHOD_(HRESULT,SendOnSave)(THIS) PURE; \
3069     STDMETHOD_(HRESULT,SendOnClose)(THIS) PURE;
3070
3071 HRESULT CALLBACK IOleAdviseHolder_Advise_Proxy(
3072     IOleAdviseHolder* This,
3073     IAdviseSink* pAdvise,
3074     DWORD* pdwConnection);
3075 void __RPC_STUB IOleAdviseHolder_Advise_Stub(
3076     struct IRpcStubBuffer* This,
3077     struct IRpcChannelBuffer* pRpcChannelBuffer,
3078     PRPC_MESSAGE pRpcMessage,
3079     DWORD* pdwStubPhase);
3080 HRESULT CALLBACK IOleAdviseHolder_Unadvise_Proxy(
3081     IOleAdviseHolder* This,
3082     DWORD dwConnection);
3083 void __RPC_STUB IOleAdviseHolder_Unadvise_Stub(
3084     struct IRpcStubBuffer* This,
3085     struct IRpcChannelBuffer* pRpcChannelBuffer,
3086     PRPC_MESSAGE pRpcMessage,
3087     DWORD* pdwStubPhase);
3088 HRESULT CALLBACK IOleAdviseHolder_EnumAdvise_Proxy(
3089     IOleAdviseHolder* This,
3090     IEnumSTATDATA** ppenumAdvise);
3091 void __RPC_STUB IOleAdviseHolder_EnumAdvise_Stub(
3092     struct IRpcStubBuffer* This,
3093     struct IRpcChannelBuffer* pRpcChannelBuffer,
3094     PRPC_MESSAGE pRpcMessage,
3095     DWORD* pdwStubPhase);
3096 HRESULT CALLBACK IOleAdviseHolder_SendOnRename_Proxy(
3097     IOleAdviseHolder* This,
3098     IMoniker* pmk);
3099 void __RPC_STUB IOleAdviseHolder_SendOnRename_Stub(
3100     struct IRpcStubBuffer* This,
3101     struct IRpcChannelBuffer* pRpcChannelBuffer,
3102     PRPC_MESSAGE pRpcMessage,
3103     DWORD* pdwStubPhase);
3104 HRESULT CALLBACK IOleAdviseHolder_SendOnSave_Proxy(
3105     IOleAdviseHolder* This);
3106 void __RPC_STUB IOleAdviseHolder_SendOnSave_Stub(
3107     struct IRpcStubBuffer* This,
3108     struct IRpcChannelBuffer* pRpcChannelBuffer,
3109     PRPC_MESSAGE pRpcMessage,
3110     DWORD* pdwStubPhase);
3111 HRESULT CALLBACK IOleAdviseHolder_SendOnClose_Proxy(
3112     IOleAdviseHolder* This);
3113 void __RPC_STUB IOleAdviseHolder_SendOnClose_Stub(
3114     struct IRpcStubBuffer* This,
3115     struct IRpcChannelBuffer* pRpcChannelBuffer,
3116     PRPC_MESSAGE pRpcMessage,
3117     DWORD* pdwStubPhase);
3118
3119 #endif  /* __IOleAdviseHolder_INTERFACE_DEFINED__ */
3120
3121 #ifndef __IContinue_FWD_DEFINED__
3122 #define __IContinue_FWD_DEFINED__
3123 typedef struct IContinue IContinue;
3124 #endif
3125
3126 /*****************************************************************************
3127  * IContinue interface
3128  */
3129 #ifndef __IContinue_INTERFACE_DEFINED__
3130 #define __IContinue_INTERFACE_DEFINED__
3131
3132 DEFINE_GUID(IID_IContinue, 0x0000012a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3133 #if defined(__cplusplus) && !defined(CINTERFACE)
3134 struct IContinue : public IUnknown
3135 {
3136     virtual HRESULT STDMETHODCALLTYPE FContinue(
3137         ) = 0;
3138
3139 };
3140 #else
3141 typedef struct IContinueVtbl IContinueVtbl;
3142 struct IContinue {
3143     const IContinueVtbl* lpVtbl;
3144 };
3145 struct IContinueVtbl {
3146     ICOM_MSVTABLE_COMPAT_FIELDS
3147
3148     /*** IUnknown methods ***/
3149     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3150         IContinue* This,
3151         REFIID riid,
3152         void** ppvObject);
3153
3154     ULONG (STDMETHODCALLTYPE *AddRef)(
3155         IContinue* This);
3156
3157     ULONG (STDMETHODCALLTYPE *Release)(
3158         IContinue* This);
3159
3160     /*** IContinue methods ***/
3161     HRESULT (STDMETHODCALLTYPE *FContinue)(
3162         IContinue* This);
3163
3164 };
3165
3166 /*** IUnknown methods ***/
3167 #define IContinue_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3168 #define IContinue_AddRef(p) (p)->lpVtbl->AddRef(p)
3169 #define IContinue_Release(p) (p)->lpVtbl->Release(p)
3170 /*** IContinue methods ***/
3171 #define IContinue_FContinue(p) (p)->lpVtbl->FContinue(p)
3172
3173 #endif
3174
3175 #define IContinue_METHODS \
3176     ICOM_MSVTABLE_COMPAT_FIELDS \
3177     /*** IUnknown methods ***/ \
3178     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3179     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3180     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3181     /*** IContinue methods ***/ \
3182     STDMETHOD_(HRESULT,FContinue)(THIS) PURE;
3183
3184 HRESULT CALLBACK IContinue_FContinue_Proxy(
3185     IContinue* This);
3186 void __RPC_STUB IContinue_FContinue_Stub(
3187     struct IRpcStubBuffer* This,
3188     struct IRpcChannelBuffer* pRpcChannelBuffer,
3189     PRPC_MESSAGE pRpcMessage,
3190     DWORD* pdwStubPhase);
3191
3192 #endif  /* __IContinue_INTERFACE_DEFINED__ */
3193
3194 #ifndef __IViewObject_FWD_DEFINED__
3195 #define __IViewObject_FWD_DEFINED__
3196 typedef struct IViewObject IViewObject;
3197 #endif
3198
3199 typedef IViewObject *LPVIEWOBJECT;
3200
3201 /*****************************************************************************
3202  * IViewObject interface
3203  */
3204 #ifndef __IViewObject_INTERFACE_DEFINED__
3205 #define __IViewObject_INTERFACE_DEFINED__
3206
3207 DEFINE_GUID(IID_IViewObject, 0x0000010d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3208 #if defined(__cplusplus) && !defined(CINTERFACE)
3209 struct IViewObject : public IUnknown
3210 {
3211     virtual HRESULT STDMETHODCALLTYPE Draw(
3212         DWORD dwDrawAspect,
3213         LONG lindex,
3214         void* pvAspect,
3215         DVTARGETDEVICE* ptd,
3216         HDC hdcTargetDev,
3217         HDC hdcDraw,
3218         LPCRECTL lprcBounds,
3219         LPCRECTL lprcWBounds,
3220         BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
3221         ULONG_PTR dwContinue) = 0;
3222
3223     virtual HRESULT STDMETHODCALLTYPE GetColorSet(
3224         DWORD dwDrawAspect,
3225         LONG lindex,
3226         void* pvAspect,
3227         DVTARGETDEVICE* ptd,
3228         HDC hicTargetDev,
3229         LOGPALETTE** ppColorSet) = 0;
3230
3231     virtual HRESULT STDMETHODCALLTYPE Freeze(
3232         DWORD dwDrawAspect,
3233         LONG lindex,
3234         void* pvAspect,
3235         DWORD* pdwFreeze) = 0;
3236
3237     virtual HRESULT STDMETHODCALLTYPE Unfreeze(
3238         DWORD dwFreeze) = 0;
3239
3240     virtual HRESULT STDMETHODCALLTYPE SetAdvise(
3241         DWORD aspects,
3242         DWORD advf,
3243         IAdviseSink* pAdvSink) = 0;
3244
3245     virtual HRESULT STDMETHODCALLTYPE GetAdvise(
3246         DWORD* pAspects,
3247         DWORD* pAdvf,
3248         IAdviseSink** ppAdvSink) = 0;
3249
3250 };
3251 #else
3252 typedef struct IViewObjectVtbl IViewObjectVtbl;
3253 struct IViewObject {
3254     const IViewObjectVtbl* lpVtbl;
3255 };
3256 struct IViewObjectVtbl {
3257     ICOM_MSVTABLE_COMPAT_FIELDS
3258
3259     /*** IUnknown methods ***/
3260     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3261         IViewObject* This,
3262         REFIID riid,
3263         void** ppvObject);
3264
3265     ULONG (STDMETHODCALLTYPE *AddRef)(
3266         IViewObject* This);
3267
3268     ULONG (STDMETHODCALLTYPE *Release)(
3269         IViewObject* This);
3270
3271     /*** IViewObject methods ***/
3272     HRESULT (STDMETHODCALLTYPE *Draw)(
3273         IViewObject* This,
3274         DWORD dwDrawAspect,
3275         LONG lindex,
3276         void* pvAspect,
3277         DVTARGETDEVICE* ptd,
3278         HDC hdcTargetDev,
3279         HDC hdcDraw,
3280         LPCRECTL lprcBounds,
3281         LPCRECTL lprcWBounds,
3282         BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
3283         ULONG_PTR dwContinue);
3284
3285     HRESULT (STDMETHODCALLTYPE *GetColorSet)(
3286         IViewObject* This,
3287         DWORD dwDrawAspect,
3288         LONG lindex,
3289         void* pvAspect,
3290         DVTARGETDEVICE* ptd,
3291         HDC hicTargetDev,
3292         LOGPALETTE** ppColorSet);
3293
3294     HRESULT (STDMETHODCALLTYPE *Freeze)(
3295         IViewObject* This,
3296         DWORD dwDrawAspect,
3297         LONG lindex,
3298         void* pvAspect,
3299         DWORD* pdwFreeze);
3300
3301     HRESULT (STDMETHODCALLTYPE *Unfreeze)(
3302         IViewObject* This,
3303         DWORD dwFreeze);
3304
3305     HRESULT (STDMETHODCALLTYPE *SetAdvise)(
3306         IViewObject* This,
3307         DWORD aspects,
3308         DWORD advf,
3309         IAdviseSink* pAdvSink);
3310
3311     HRESULT (STDMETHODCALLTYPE *GetAdvise)(
3312         IViewObject* This,
3313         DWORD* pAspects,
3314         DWORD* pAdvf,
3315         IAdviseSink** ppAdvSink);
3316
3317 };
3318
3319 /*** IUnknown methods ***/
3320 #define IViewObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3321 #define IViewObject_AddRef(p) (p)->lpVtbl->AddRef(p)
3322 #define IViewObject_Release(p) (p)->lpVtbl->Release(p)
3323 /*** IViewObject methods ***/
3324 #define IViewObject_Draw(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Draw(p,a,b,c,d,e,f,g,h,i,j)
3325 #define IViewObject_GetColorSet(p,a,b,c,d,e,f) (p)->lpVtbl->GetColorSet(p,a,b,c,d,e,f)
3326 #define IViewObject_Freeze(p,a,b,c,d) (p)->lpVtbl->Freeze(p,a,b,c,d)
3327 #define IViewObject_Unfreeze(p,a) (p)->lpVtbl->Unfreeze(p,a)
3328 #define IViewObject_SetAdvise(p,a,b,c) (p)->lpVtbl->SetAdvise(p,a,b,c)
3329 #define IViewObject_GetAdvise(p,a,b,c) (p)->lpVtbl->GetAdvise(p,a,b,c)
3330
3331 #endif
3332
3333 #define IViewObject_METHODS \
3334     ICOM_MSVTABLE_COMPAT_FIELDS \
3335     /*** IUnknown methods ***/ \
3336     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3337     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3338     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3339     /*** IViewObject methods ***/ \
3340     STDMETHOD_(HRESULT,Draw)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) PURE; \
3341     STDMETHOD_(HRESULT,GetColorSet)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hicTargetDev, LOGPALETTE** ppColorSet) PURE; \
3342     STDMETHOD_(HRESULT,Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DWORD* pdwFreeze) PURE; \
3343     STDMETHOD_(HRESULT,Unfreeze)(THIS_ DWORD dwFreeze) PURE; \
3344     STDMETHOD_(HRESULT,SetAdvise)(THIS_ DWORD aspects, DWORD advf, IAdviseSink* pAdvSink) PURE; \
3345     STDMETHOD_(HRESULT,GetAdvise)(THIS_ DWORD* pAspects, DWORD* pAdvf, IAdviseSink** ppAdvSink) PURE;
3346
3347 HRESULT CALLBACK IViewObject_RemoteDraw_Proxy(
3348     IViewObject* This,
3349     DWORD dwDrawAspect,
3350     LONG lindex,
3351     ULONG_PTR pvAspect,
3352     DVTARGETDEVICE* ptd,
3353     ULONG_PTR hdcTargetDev,
3354     ULONG_PTR hdcDraw,
3355     LPCRECTL lprcBounds,
3356     LPCRECTL lprcWBounds,
3357     IContinue* pContinue);
3358 void __RPC_STUB IViewObject_RemoteDraw_Stub(
3359     struct IRpcStubBuffer* This,
3360     struct IRpcChannelBuffer* pRpcChannelBuffer,
3361     PRPC_MESSAGE pRpcMessage,
3362     DWORD* pdwStubPhase);
3363 HRESULT CALLBACK IViewObject_Draw_Proxy(
3364     IViewObject* This,
3365     DWORD dwDrawAspect,
3366     LONG lindex,
3367     void* pvAspect,
3368     DVTARGETDEVICE* ptd,
3369     HDC hdcTargetDev,
3370     HDC hdcDraw,
3371     LPCRECTL lprcBounds,
3372     LPCRECTL lprcWBounds,
3373     BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
3374     ULONG_PTR dwContinue);
3375 HRESULT __RPC_STUB IViewObject_Draw_Stub(
3376     IViewObject* This,
3377     DWORD dwDrawAspect,
3378     LONG lindex,
3379     ULONG_PTR pvAspect,
3380     DVTARGETDEVICE* ptd,
3381     ULONG_PTR hdcTargetDev,
3382     ULONG_PTR hdcDraw,
3383     LPCRECTL lprcBounds,
3384     LPCRECTL lprcWBounds,
3385     IContinue* pContinue);
3386 HRESULT CALLBACK IViewObject_RemoteGetColorSet_Proxy(
3387     IViewObject* This,
3388     DWORD dwDrawAspect,
3389     LONG lindex,
3390     ULONG_PTR pvAspect,
3391     DVTARGETDEVICE* ptd,
3392     ULONG_PTR hicTargetDev,
3393     LOGPALETTE** ppColorSet);
3394 void __RPC_STUB IViewObject_RemoteGetColorSet_Stub(
3395     struct IRpcStubBuffer* This,
3396     struct IRpcChannelBuffer* pRpcChannelBuffer,
3397     PRPC_MESSAGE pRpcMessage,
3398     DWORD* pdwStubPhase);
3399 HRESULT CALLBACK IViewObject_GetColorSet_Proxy(
3400     IViewObject* This,
3401     DWORD dwDrawAspect,
3402     LONG lindex,
3403     void* pvAspect,
3404     DVTARGETDEVICE* ptd,
3405     HDC hicTargetDev,
3406     LOGPALETTE** ppColorSet);
3407 HRESULT __RPC_STUB IViewObject_GetColorSet_Stub(
3408     IViewObject* This,
3409     DWORD dwDrawAspect,
3410     LONG lindex,
3411     ULONG_PTR pvAspect,
3412     DVTARGETDEVICE* ptd,
3413     ULONG_PTR hicTargetDev,
3414     LOGPALETTE** ppColorSet);
3415 HRESULT CALLBACK IViewObject_RemoteFreeze_Proxy(
3416     IViewObject* This,
3417     DWORD dwDrawAspect,
3418     LONG lindex,
3419     ULONG_PTR pvAspect,
3420     DWORD* pdwFreeze);
3421 void __RPC_STUB IViewObject_RemoteFreeze_Stub(
3422     struct IRpcStubBuffer* This,
3423     struct IRpcChannelBuffer* pRpcChannelBuffer,
3424     PRPC_MESSAGE pRpcMessage,
3425     DWORD* pdwStubPhase);
3426 HRESULT CALLBACK IViewObject_Freeze_Proxy(
3427     IViewObject* This,
3428     DWORD dwDrawAspect,
3429     LONG lindex,
3430     void* pvAspect,
3431     DWORD* pdwFreeze);
3432 HRESULT __RPC_STUB IViewObject_Freeze_Stub(
3433     IViewObject* This,
3434     DWORD dwDrawAspect,
3435     LONG lindex,
3436     ULONG_PTR pvAspect,
3437     DWORD* pdwFreeze);
3438 HRESULT CALLBACK IViewObject_Unfreeze_Proxy(
3439     IViewObject* This,
3440     DWORD dwFreeze);
3441 void __RPC_STUB IViewObject_Unfreeze_Stub(
3442     struct IRpcStubBuffer* This,
3443     struct IRpcChannelBuffer* pRpcChannelBuffer,
3444     PRPC_MESSAGE pRpcMessage,
3445     DWORD* pdwStubPhase);
3446 HRESULT CALLBACK IViewObject_SetAdvise_Proxy(
3447     IViewObject* This,
3448     DWORD aspects,
3449     DWORD advf,
3450     IAdviseSink* pAdvSink);
3451 void __RPC_STUB IViewObject_SetAdvise_Stub(
3452     struct IRpcStubBuffer* This,
3453     struct IRpcChannelBuffer* pRpcChannelBuffer,
3454     PRPC_MESSAGE pRpcMessage,
3455     DWORD* pdwStubPhase);
3456 HRESULT CALLBACK IViewObject_RemoteGetAdvise_Proxy(
3457     IViewObject* This,
3458     DWORD* pAspects,
3459     DWORD* pAdvf,
3460     IAdviseSink** ppAdvSink);
3461 void __RPC_STUB IViewObject_RemoteGetAdvise_Stub(
3462     struct IRpcStubBuffer* This,
3463     struct IRpcChannelBuffer* pRpcChannelBuffer,
3464     PRPC_MESSAGE pRpcMessage,
3465     DWORD* pdwStubPhase);
3466 HRESULT CALLBACK IViewObject_GetAdvise_Proxy(
3467     IViewObject* This,
3468     DWORD* pAspects,
3469     DWORD* pAdvf,
3470     IAdviseSink** ppAdvSink);
3471 HRESULT __RPC_STUB IViewObject_GetAdvise_Stub(
3472     IViewObject* This,
3473     DWORD* pAspects,
3474     DWORD* pAdvf,
3475     IAdviseSink** ppAdvSink);
3476
3477 #endif  /* __IViewObject_INTERFACE_DEFINED__ */
3478
3479 #ifndef __IViewObject2_FWD_DEFINED__
3480 #define __IViewObject2_FWD_DEFINED__
3481 typedef struct IViewObject2 IViewObject2;
3482 #endif
3483
3484 typedef IViewObject2 *LPVIEWOBJECT2;
3485
3486 /*****************************************************************************
3487  * IViewObject2 interface
3488  */
3489 #ifndef __IViewObject2_INTERFACE_DEFINED__
3490 #define __IViewObject2_INTERFACE_DEFINED__
3491
3492 DEFINE_GUID(IID_IViewObject2, 0x00000127, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3493 #if defined(__cplusplus) && !defined(CINTERFACE)
3494 struct IViewObject2 : public IViewObject
3495 {
3496     virtual HRESULT STDMETHODCALLTYPE GetExtent(
3497         DWORD dwDrawAspect,
3498         LONG lindex,
3499         DVTARGETDEVICE* ptd,
3500         LPSIZEL lpsizel) = 0;
3501
3502 };
3503 #else
3504 typedef struct IViewObject2Vtbl IViewObject2Vtbl;
3505 struct IViewObject2 {
3506     const IViewObject2Vtbl* lpVtbl;
3507 };
3508 struct IViewObject2Vtbl {
3509     ICOM_MSVTABLE_COMPAT_FIELDS
3510
3511     /*** IUnknown methods ***/
3512     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3513         IViewObject2* This,
3514         REFIID riid,
3515         void** ppvObject);
3516
3517     ULONG (STDMETHODCALLTYPE *AddRef)(
3518         IViewObject2* This);
3519
3520     ULONG (STDMETHODCALLTYPE *Release)(
3521         IViewObject2* This);
3522
3523     /*** IViewObject methods ***/
3524     HRESULT (STDMETHODCALLTYPE *Draw)(
3525         IViewObject2* This,
3526         DWORD dwDrawAspect,
3527         LONG lindex,
3528         void* pvAspect,
3529         DVTARGETDEVICE* ptd,
3530         HDC hdcTargetDev,
3531         HDC hdcDraw,
3532         LPCRECTL lprcBounds,
3533         LPCRECTL lprcWBounds,
3534         BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
3535         ULONG_PTR dwContinue);
3536
3537     HRESULT (STDMETHODCALLTYPE *GetColorSet)(
3538         IViewObject2* This,
3539         DWORD dwDrawAspect,
3540         LONG lindex,
3541         void* pvAspect,
3542         DVTARGETDEVICE* ptd,
3543         HDC hicTargetDev,
3544         LOGPALETTE** ppColorSet);
3545
3546     HRESULT (STDMETHODCALLTYPE *Freeze)(
3547         IViewObject2* This,
3548         DWORD dwDrawAspect,
3549         LONG lindex,
3550         void* pvAspect,
3551         DWORD* pdwFreeze);
3552
3553     HRESULT (STDMETHODCALLTYPE *Unfreeze)(
3554         IViewObject2* This,
3555         DWORD dwFreeze);
3556
3557     HRESULT (STDMETHODCALLTYPE *SetAdvise)(
3558         IViewObject2* This,
3559         DWORD aspects,
3560         DWORD advf,
3561         IAdviseSink* pAdvSink);
3562
3563     HRESULT (STDMETHODCALLTYPE *GetAdvise)(
3564         IViewObject2* This,
3565         DWORD* pAspects,
3566         DWORD* pAdvf,
3567         IAdviseSink** ppAdvSink);
3568
3569     /*** IViewObject2 methods ***/
3570     HRESULT (STDMETHODCALLTYPE *GetExtent)(
3571         IViewObject2* This,
3572         DWORD dwDrawAspect,
3573         LONG lindex,
3574         DVTARGETDEVICE* ptd,
3575         LPSIZEL lpsizel);
3576
3577 };
3578
3579 /*** IUnknown methods ***/
3580 #define IViewObject2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3581 #define IViewObject2_AddRef(p) (p)->lpVtbl->AddRef(p)
3582 #define IViewObject2_Release(p) (p)->lpVtbl->Release(p)
3583 /*** IViewObject methods ***/
3584 #define IViewObject2_Draw(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Draw(p,a,b,c,d,e,f,g,h,i,j)
3585 #define IViewObject2_GetColorSet(p,a,b,c,d,e,f) (p)->lpVtbl->GetColorSet(p,a,b,c,d,e,f)
3586 #define IViewObject2_Freeze(p,a,b,c,d) (p)->lpVtbl->Freeze(p,a,b,c,d)
3587 #define IViewObject2_Unfreeze(p,a) (p)->lpVtbl->Unfreeze(p,a)
3588 #define IViewObject2_SetAdvise(p,a,b,c) (p)->lpVtbl->SetAdvise(p,a,b,c)
3589 #define IViewObject2_GetAdvise(p,a,b,c) (p)->lpVtbl->GetAdvise(p,a,b,c)
3590 /*** IViewObject2 methods ***/
3591 #define IViewObject2_GetExtent(p,a,b,c,d) (p)->lpVtbl->GetExtent(p,a,b,c,d)
3592
3593 #endif
3594
3595 #define IViewObject2_METHODS \
3596     ICOM_MSVTABLE_COMPAT_FIELDS \
3597     /*** IUnknown methods ***/ \
3598     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3599     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3600     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3601     /*** IViewObject methods ***/ \
3602     STDMETHOD_(HRESULT,Draw)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) PURE; \
3603     STDMETHOD_(HRESULT,GetColorSet)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hicTargetDev, LOGPALETTE** ppColorSet) PURE; \
3604     STDMETHOD_(HRESULT,Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DWORD* pdwFreeze) PURE; \
3605     STDMETHOD_(HRESULT,Unfreeze)(THIS_ DWORD dwFreeze) PURE; \
3606     STDMETHOD_(HRESULT,SetAdvise)(THIS_ DWORD aspects, DWORD advf, IAdviseSink* pAdvSink) PURE; \
3607     STDMETHOD_(HRESULT,GetAdvise)(THIS_ DWORD* pAspects, DWORD* pAdvf, IAdviseSink** ppAdvSink) PURE; \
3608     /*** IViewObject2 methods ***/ \
3609     STDMETHOD_(HRESULT,GetExtent)(THIS_ DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE* ptd, LPSIZEL lpsizel) PURE;
3610
3611 HRESULT CALLBACK IViewObject2_GetExtent_Proxy(
3612     IViewObject2* This,
3613     DWORD dwDrawAspect,
3614     LONG lindex,
3615     DVTARGETDEVICE* ptd,
3616     LPSIZEL lpsizel);
3617 void __RPC_STUB IViewObject2_GetExtent_Stub(
3618     struct IRpcStubBuffer* This,
3619     struct IRpcChannelBuffer* pRpcChannelBuffer,
3620     PRPC_MESSAGE pRpcMessage,
3621     DWORD* pdwStubPhase);
3622
3623 #endif  /* __IViewObject2_INTERFACE_DEFINED__ */
3624
3625 #ifndef __IDropSource_FWD_DEFINED__
3626 #define __IDropSource_FWD_DEFINED__
3627 typedef struct IDropSource IDropSource;
3628 #endif
3629
3630 typedef IDropSource *LPDROPSOURCE;
3631
3632 /*****************************************************************************
3633  * IDropSource interface
3634  */
3635 #ifndef __IDropSource_INTERFACE_DEFINED__
3636 #define __IDropSource_INTERFACE_DEFINED__
3637
3638 DEFINE_GUID(IID_IDropSource, 0x00000121, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3639 #if defined(__cplusplus) && !defined(CINTERFACE)
3640 struct IDropSource : public IUnknown
3641 {
3642     virtual HRESULT STDMETHODCALLTYPE QueryContinueDrag(
3643         BOOL fEscapePressed,
3644         DWORD grfKeyState) = 0;
3645
3646     virtual HRESULT STDMETHODCALLTYPE GiveFeedback(
3647         DWORD dwEffect) = 0;
3648
3649 };
3650 #else
3651 typedef struct IDropSourceVtbl IDropSourceVtbl;
3652 struct IDropSource {
3653     const IDropSourceVtbl* lpVtbl;
3654 };
3655 struct IDropSourceVtbl {
3656     ICOM_MSVTABLE_COMPAT_FIELDS
3657
3658     /*** IUnknown methods ***/
3659     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3660         IDropSource* This,
3661         REFIID riid,
3662         void** ppvObject);
3663
3664     ULONG (STDMETHODCALLTYPE *AddRef)(
3665         IDropSource* This);
3666
3667     ULONG (STDMETHODCALLTYPE *Release)(
3668         IDropSource* This);
3669
3670     /*** IDropSource methods ***/
3671     HRESULT (STDMETHODCALLTYPE *QueryContinueDrag)(
3672         IDropSource* This,
3673         BOOL fEscapePressed,
3674         DWORD grfKeyState);
3675
3676     HRESULT (STDMETHODCALLTYPE *GiveFeedback)(
3677         IDropSource* This,
3678         DWORD dwEffect);
3679
3680 };
3681
3682 /*** IUnknown methods ***/
3683 #define IDropSource_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3684 #define IDropSource_AddRef(p) (p)->lpVtbl->AddRef(p)
3685 #define IDropSource_Release(p) (p)->lpVtbl->Release(p)
3686 /*** IDropSource methods ***/
3687 #define IDropSource_QueryContinueDrag(p,a,b) (p)->lpVtbl->QueryContinueDrag(p,a,b)
3688 #define IDropSource_GiveFeedback(p,a) (p)->lpVtbl->GiveFeedback(p,a)
3689
3690 #endif
3691
3692 #define IDropSource_METHODS \
3693     ICOM_MSVTABLE_COMPAT_FIELDS \
3694     /*** IUnknown methods ***/ \
3695     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3696     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3697     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3698     /*** IDropSource methods ***/ \
3699     STDMETHOD_(HRESULT,QueryContinueDrag)(THIS_ BOOL fEscapePressed, DWORD grfKeyState) PURE; \
3700     STDMETHOD_(HRESULT,GiveFeedback)(THIS_ DWORD dwEffect) PURE;
3701
3702 HRESULT CALLBACK IDropSource_QueryContinueDrag_Proxy(
3703     IDropSource* This,
3704     BOOL fEscapePressed,
3705     DWORD grfKeyState);
3706 void __RPC_STUB IDropSource_QueryContinueDrag_Stub(
3707     struct IRpcStubBuffer* This,
3708     struct IRpcChannelBuffer* pRpcChannelBuffer,
3709     PRPC_MESSAGE pRpcMessage,
3710     DWORD* pdwStubPhase);
3711 HRESULT CALLBACK IDropSource_GiveFeedback_Proxy(
3712     IDropSource* This,
3713     DWORD dwEffect);
3714 void __RPC_STUB IDropSource_GiveFeedback_Stub(
3715     struct IRpcStubBuffer* This,
3716     struct IRpcChannelBuffer* pRpcChannelBuffer,
3717     PRPC_MESSAGE pRpcMessage,
3718     DWORD* pdwStubPhase);
3719
3720 #endif  /* __IDropSource_INTERFACE_DEFINED__ */
3721
3722 #ifndef __IDropTarget_FWD_DEFINED__
3723 #define __IDropTarget_FWD_DEFINED__
3724 typedef struct IDropTarget IDropTarget;
3725 #endif
3726
3727 typedef IDropTarget *LPDROPTARGET;
3728
3729 #define MK_ALT (0x20)
3730
3731 #define DROPEFFECT_NONE (0)
3732
3733 #define DROPEFFECT_COPY (1)
3734
3735 #define DROPEFFECT_MOVE (2)
3736
3737 #define DROPEFFECT_LINK (4)
3738
3739 #define DROPEFFECT_SCROLL (0x80000000)
3740
3741 #define DD_DEFSCROLLINSET (11)
3742
3743 #define DD_DEFSCROLLDELAY (50)
3744
3745 #define DD_DEFSCROLLINTERVAL (50)
3746
3747 #define DD_DEFDRAGDELAY (200)
3748
3749 #define DD_DEFDRAGMINDIST (2)
3750
3751 /*****************************************************************************
3752  * IDropTarget interface
3753  */
3754 #ifndef __IDropTarget_INTERFACE_DEFINED__
3755 #define __IDropTarget_INTERFACE_DEFINED__
3756
3757 DEFINE_GUID(IID_IDropTarget, 0x00000122, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3758 #if defined(__cplusplus) && !defined(CINTERFACE)
3759 struct IDropTarget : public IUnknown
3760 {
3761     virtual HRESULT STDMETHODCALLTYPE DragEnter(
3762         IDataObject* pDataObj,
3763         DWORD grfKeyState,
3764         POINTL pt,
3765         DWORD* pdwEffect) = 0;
3766
3767     virtual HRESULT STDMETHODCALLTYPE DragOver(
3768         DWORD grfKeyState,
3769         POINTL pt,
3770         DWORD* pdwEffect) = 0;
3771
3772     virtual HRESULT STDMETHODCALLTYPE DragLeave(
3773         ) = 0;
3774
3775     virtual HRESULT STDMETHODCALLTYPE Drop(
3776         IDataObject* pDataObj,
3777         DWORD grfKeyState,
3778         POINTL pt,
3779         DWORD* pdwEffect) = 0;
3780
3781 };
3782 #else
3783 typedef struct IDropTargetVtbl IDropTargetVtbl;
3784 struct IDropTarget {
3785     const IDropTargetVtbl* lpVtbl;
3786 };
3787 struct IDropTargetVtbl {
3788     ICOM_MSVTABLE_COMPAT_FIELDS
3789
3790     /*** IUnknown methods ***/
3791     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3792         IDropTarget* This,
3793         REFIID riid,
3794         void** ppvObject);
3795
3796     ULONG (STDMETHODCALLTYPE *AddRef)(
3797         IDropTarget* This);
3798
3799     ULONG (STDMETHODCALLTYPE *Release)(
3800         IDropTarget* This);
3801
3802     /*** IDropTarget methods ***/
3803     HRESULT (STDMETHODCALLTYPE *DragEnter)(
3804         IDropTarget* This,
3805         IDataObject* pDataObj,
3806         DWORD grfKeyState,
3807         POINTL pt,
3808         DWORD* pdwEffect);
3809
3810     HRESULT (STDMETHODCALLTYPE *DragOver)(
3811         IDropTarget* This,
3812         DWORD grfKeyState,
3813         POINTL pt,
3814         DWORD* pdwEffect);
3815
3816     HRESULT (STDMETHODCALLTYPE *DragLeave)(
3817         IDropTarget* This);
3818
3819     HRESULT (STDMETHODCALLTYPE *Drop)(
3820         IDropTarget* This,
3821         IDataObject* pDataObj,
3822         DWORD grfKeyState,
3823         POINTL pt,
3824         DWORD* pdwEffect);
3825
3826 };
3827
3828 /*** IUnknown methods ***/
3829 #define IDropTarget_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3830 #define IDropTarget_AddRef(p) (p)->lpVtbl->AddRef(p)
3831 #define IDropTarget_Release(p) (p)->lpVtbl->Release(p)
3832 /*** IDropTarget methods ***/
3833 #define IDropTarget_DragEnter(p,a,b,c,d) (p)->lpVtbl->DragEnter(p,a,b,c,d)
3834 #define IDropTarget_DragOver(p,a,b,c) (p)->lpVtbl->DragOver(p,a,b,c)
3835 #define IDropTarget_DragLeave(p) (p)->lpVtbl->DragLeave(p)
3836 #define IDropTarget_Drop(p,a,b,c,d) (p)->lpVtbl->Drop(p,a,b,c,d)
3837
3838 #endif
3839
3840 #define IDropTarget_METHODS \
3841     ICOM_MSVTABLE_COMPAT_FIELDS \
3842     /*** IUnknown methods ***/ \
3843     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3844     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3845     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3846     /*** IDropTarget methods ***/ \
3847     STDMETHOD_(HRESULT,DragEnter)(THIS_ IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) PURE; \
3848     STDMETHOD_(HRESULT,DragOver)(THIS_ DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) PURE; \
3849     STDMETHOD_(HRESULT,DragLeave)(THIS) PURE; \
3850     STDMETHOD_(HRESULT,Drop)(THIS_ IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) PURE;
3851
3852 HRESULT CALLBACK IDropTarget_DragEnter_Proxy(
3853     IDropTarget* This,
3854     IDataObject* pDataObj,
3855     DWORD grfKeyState,
3856     POINTL pt,
3857     DWORD* pdwEffect);
3858 void __RPC_STUB IDropTarget_DragEnter_Stub(
3859     struct IRpcStubBuffer* This,
3860     struct IRpcChannelBuffer* pRpcChannelBuffer,
3861     PRPC_MESSAGE pRpcMessage,
3862     DWORD* pdwStubPhase);
3863 HRESULT CALLBACK IDropTarget_DragOver_Proxy(
3864     IDropTarget* This,
3865     DWORD grfKeyState,
3866     POINTL pt,
3867     DWORD* pdwEffect);
3868 void __RPC_STUB IDropTarget_DragOver_Stub(
3869     struct IRpcStubBuffer* This,
3870     struct IRpcChannelBuffer* pRpcChannelBuffer,
3871     PRPC_MESSAGE pRpcMessage,
3872     DWORD* pdwStubPhase);
3873 HRESULT CALLBACK IDropTarget_DragLeave_Proxy(
3874     IDropTarget* This);
3875 void __RPC_STUB IDropTarget_DragLeave_Stub(
3876     struct IRpcStubBuffer* This,
3877     struct IRpcChannelBuffer* pRpcChannelBuffer,
3878     PRPC_MESSAGE pRpcMessage,
3879     DWORD* pdwStubPhase);
3880 HRESULT CALLBACK IDropTarget_Drop_Proxy(
3881     IDropTarget* This,
3882     IDataObject* pDataObj,
3883     DWORD grfKeyState,
3884     POINTL pt,
3885     DWORD* pdwEffect);
3886 void __RPC_STUB IDropTarget_Drop_Stub(
3887     struct IRpcStubBuffer* This,
3888     struct IRpcChannelBuffer* pRpcChannelBuffer,
3889     PRPC_MESSAGE pRpcMessage,
3890     DWORD* pdwStubPhase);
3891
3892 #endif  /* __IDropTarget_INTERFACE_DEFINED__ */
3893
3894 #ifdef __cplusplus
3895 }
3896 #endif
3897 #endif /* __WIDL_OLEIDL_H */