Fix the case of product and company names.
[wine] / include / oleidl.idl
1 /*
2  * Copyright (C) 1999 Paul Quinn
3  * Copyright (C) 1999 Francis Beaudet
4  * Copyright (C) 2003 Alexandre Julliard
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 import "objidl.idl";
22
23
24 /*****************************************************************************
25  * IOleTypes interface
26  */
27 [
28     uuid(b0916c84-7416-101a-bcea-08002b2b79ef)
29 ]
30 interface IOLETypes
31 {
32     typedef enum tagOLERENDER
33     {
34         OLERENDER_NONE = 0,
35         OLERENDER_DRAW = 1,
36         OLERENDER_FORMAT = 2,
37         OLERENDER_ASIS = 3
38     } OLERENDER, *LPOLERENDER;
39
40     typedef struct tagOBJECTDESCRIPTOR
41     {
42         ULONG cbSize;
43         CLSID clsid;
44         DWORD dwDrawAspect;
45         SIZEL sizel;
46         POINTL pointl;
47         DWORD dwStatus;
48         DWORD dwFullUserTypeName;
49         DWORD dwSrcOfCopy;
50     } OBJECTDESCRIPTOR,  *POBJECTDESCRIPTOR,   *LPOBJECTDESCRIPTOR,
51       LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR,  *LPLINKSRCDESCRIPTOR;
52 }
53
54
55 /*****************************************************************************
56  * IOleWindow interface
57  */
58 [
59     object,
60     uuid(00000114-0000-0000-c000-000000000046),
61     pointer_default(unique)
62 ]
63 interface IOleWindow : IUnknown
64 {
65     typedef [unique] IOleWindow *LPOLEWINDOW;
66
67     HRESULT GetWindow(
68         [out] HWND *phwnd);
69
70     HRESULT ContextSensitiveHelp(
71         [in] BOOL fEnterMode);
72 }
73
74
75 /*****************************************************************************
76  * IOleInPlaceObject interface
77  */
78 [
79     object,
80     uuid(00000113-0000-0000-c000-000000000046),
81     pointer_default(unique)
82 ]
83 interface IOleInPlaceObject : IOleWindow
84 {
85     typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
86
87     HRESULT InPlaceDeactivate();
88
89     HRESULT UIDeactivate();
90
91     HRESULT SetObjectRects(
92         [in] LPCRECT lprcPosRect,
93         [in] LPCRECT lprcClipRect);
94
95     HRESULT ReactivateAndUndo();
96 }
97
98
99 /*****************************************************************************
100  * IOleInPlaceActiveObject interface
101  */
102 interface IOleInPlaceUIWindow;  /* forward declaration */
103 [
104     object,
105     uuid(00000117-0000-0000-c000-000000000046)
106 ]
107 interface IOleInPlaceActiveObject : IOleWindow
108 {
109     typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
110
111 cpp_quote("struct tagMSG;")  /* FIXME */
112
113     [local]
114     HRESULT TranslateAccelerator(
115         [in] struct tagMSG *lpmsg);
116
117     [call_as(TranslateAccelerator)]
118     HRESULT RemoteTranslateAccelerator();
119
120     HRESULT OnFrameWindowActivate(
121         [in] BOOL fActivate);
122
123     HRESULT OnDocWindowActivate(
124         [in] BOOL fActivate);
125
126     [local]
127     HRESULT ResizeBorder(
128         [in] LPCRECT prcBorder,
129         [in, unique] IOleInPlaceUIWindow *pUIWindow,
130         [in] BOOL fFrameWindow);
131
132     [call_as(ResizeBorder)]
133     HRESULT RemoteResizeBorder(
134         [in] LPCRECT prcBorder,
135         [in] REFIID riid,
136         [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
137         [in] BOOL fFrameWindow);
138
139     HRESULT EnableModeless(
140         [in] BOOL fEnable);
141 }
142
143
144 /*****************************************************************************
145  * IOleInPlaceUIWindow interface
146  */
147 [
148     object,
149     uuid(00000115-0000-0000-c000-000000000046),
150     pointer_default(unique)
151 ]
152
153 interface IOleInPlaceUIWindow : IOleWindow
154 {
155     typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
156
157     typedef RECT BORDERWIDTHS;
158     typedef LPRECT LPBORDERWIDTHS;
159     typedef LPCRECT LPCBORDERWIDTHS;
160
161     HRESULT GetBorder(
162         [out] LPRECT lprectBorder);
163
164     HRESULT RequestBorderSpace(
165         [in, unique] LPCBORDERWIDTHS pborderwidths);
166
167     HRESULT SetBorderSpace(
168         [in, unique] LPCBORDERWIDTHS pborderwidths);
169
170     HRESULT SetActiveObject(
171         [in, unique] IOleInPlaceActiveObject *pActiveObject,
172         [in, string, unique] LPCOLESTR pszObjName);
173 }
174
175
176 /*****************************************************************************
177  * IOleInPlaceFrame interface
178  */
179 [
180     object,
181     uuid(00000116-0000-0000-c000-000000000046),
182     pointer_default(unique)
183 ]
184 interface IOleInPlaceFrame : IOleInPlaceUIWindow
185 {
186     typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
187
188     typedef struct tagOleInPlaceFrameInfo
189     {
190         UINT cb;
191         BOOL fMDIApp;
192         HWND hwndFrame;
193         HACCEL haccel;
194         UINT cAccelEntries;
195     } OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
196
197     typedef struct  tagOleMenuGroupWidths
198     {
199         LONG width[ 6 ];
200     } OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
201
202     typedef HGLOBAL HOLEMENU;
203
204     HRESULT InsertMenus(
205         [in] HMENU hmenuShared,
206         [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
207
208     HRESULT SetMenu(
209         [in] HMENU hmenuShared,
210         [in] HOLEMENU holemenu,
211         [in] HWND hwndActiveObject);
212
213     HRESULT RemoveMenus(
214         [in] HMENU hmenuShared);
215
216     HRESULT SetStatusText(
217         [in, unique] LPCOLESTR pszStatusText);
218
219     HRESULT EnableModeless(
220         [in] BOOL fEnable);
221
222     HRESULT TranslateAccelerator(
223         [in] struct tagMSG *lpmsg,
224         [in] WORD wID);
225 }
226
227
228 /*****************************************************************************
229  * IOleInPlaceSite interface
230  */
231 [
232     object,
233     uuid(00000119-0000-0000-c000-000000000046),
234     pointer_default(unique)
235 ]
236 interface IOleInPlaceSite : IOleWindow
237 {
238     typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
239
240     HRESULT CanInPlaceActivate();
241     HRESULT OnInPlaceActivate();
242     HRESULT OnUIActivate();
243
244     HRESULT GetWindowContext(
245         [out] IOleInPlaceFrame **ppFrame,
246         [out] IOleInPlaceUIWindow **ppDoc,
247         [out] LPRECT lprcPosRect,
248         [out] LPRECT lprcClipRect,
249         [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo);
250
251     HRESULT Scroll(
252         [in] SIZE scrollExtant);
253
254     HRESULT OnUIDeactivate(
255         [in] BOOL fUndoable);
256
257     HRESULT OnInPlaceDeactivate();
258     HRESULT DiscardUndoState();
259     HRESULT DeactivateAndUndo();
260
261     HRESULT OnPosRectChange(
262         [in] LPCRECT lprcPosRect);
263 }
264
265
266 /*****************************************************************************
267  * IParseDisplayName interface
268  */
269 [
270     object,
271     uuid(0000011a-0000-0000-c000-000000000046),
272     pointer_default(unique)
273 ]
274 interface IParseDisplayName : IUnknown
275 {
276     typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
277
278     HRESULT ParseDisplayName(
279         [in, unique] IBindCtx *pbc,
280         [in] LPOLESTR pszDisplayName,
281         [out] ULONG *pchEaten,
282         [out] IMoniker **ppmkOut);
283 }
284
285
286 /*****************************************************************************
287  * IOleContainer interface
288  */
289 [
290     object,
291     uuid(0000011b-0000-0000-c000-000000000046),
292     pointer_default(unique)
293 ]
294 interface IOleContainer : IParseDisplayName
295 {
296     typedef [unique] IOleContainer *LPOLECONTAINER;
297
298     HRESULT EnumObjects(
299         [in] DWORD grfFlags,
300         [out] IEnumUnknown **ppenum);
301
302     HRESULT LockContainer(
303         [in] BOOL fLock);
304 }
305
306
307 /*****************************************************************************
308  * IOleItemContainer interface
309  */
310 [
311     object,
312     uuid(0000011c-0000-0000-c000-000000000046),
313     pointer_default(unique)
314 ]
315 interface IOleItemContainer : IOleContainer
316 {
317     typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
318
319     typedef enum tagBINDSPEED
320     {
321         BINDSPEED_INDEFINITE = 1,
322         BINDSPEED_MODERATE = 2,
323         BINDSPEED_IMMEDIATE = 3
324     } BINDSPEED;
325
326     typedef enum tagOLECONTF
327     {
328         OLECONTF_EMBEDDINGS = 1,
329         OLECONTF_LINKS = 2,
330         OLECONTF_OTHERS = 4,
331         OLECONTF_OLNYUSER = 8,
332         OLECONTF_ONLYIFRUNNING = 16
333     } OLECONTF;
334
335 cpp_quote("#ifdef __WINESRC__")
336 cpp_quote("#undef GetObject")
337 cpp_quote("#endif")
338     HRESULT GetObject(
339         [in] LPOLESTR pszItem,
340         [in] DWORD dwSpeedNeeded,
341         [in, unique] IBindCtx *pbc,
342         [in] REFIID riid,
343         [out, iid_is(riid)] void **ppvObject);
344
345     HRESULT GetObjectStorage(
346         [in] LPOLESTR pszItem,
347         [in, unique] IBindCtx *pbc,
348         [in] REFIID riid,
349         [out, iid_is(riid)] void **ppvStorage);
350
351     HRESULT IsRunning(
352         [in] LPOLESTR pszItem);
353 }
354
355
356 /*****************************************************************************
357  * IOleLink interface
358  */
359 [
360     object,
361     uuid(0000011d-0000-0000-c000-000000000046)
362 ]
363 interface IOleLink : IUnknown
364 {
365     typedef [unique] IOleLink *LPOLELINK;
366
367     typedef enum tagOLEUPDATE
368     {
369         OLEUPDATE_ALWAYS = 1,
370         OLEUPDATE_ONCALL = 3
371     } OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE;
372
373     typedef enum tagOLELINKBIND
374     {
375         OLELINKBIND_EVENIFCLASSDIFF = 1
376     } OLELINKBIND;
377
378     HRESULT SetUpdateOptions(
379         [in] DWORD dwUpdateOpt);
380
381     HRESULT GetUpdateOptions(
382         [out] DWORD *pdwUpdateOpt);
383
384     HRESULT SetSourceMoniker(
385         [in, unique] IMoniker *pmk,
386         [in] REFCLSID rclsid);
387
388     HRESULT GetSourceMoniker(
389         [out] IMoniker **ppmk);
390
391     HRESULT SetSourceDisplayName(
392         [in]LPCOLESTR pszStatusText);
393
394     HRESULT GetSourceDisplayName(
395         [out] LPOLESTR *ppszDisplayName);
396
397     HRESULT BindToSource(
398         [in] DWORD bindflags,
399         [in, unique] IBindCtx *pbc);
400
401     HRESULT BindIfRunning();
402
403     HRESULT GetBoundSource(
404         [out] IUnknown **ppunk);
405
406     HRESULT UnbindSource();
407
408     HRESULT Update(
409         [in, unique] IBindCtx *pbc);
410 }
411
412
413 /*****************************************************************************
414  * IOleClientSite interface
415  */
416 [
417     object,
418     uuid(00000118-0000-0000-c000-000000000046),
419     pointer_default(unique)
420 ]
421 interface IOleClientSite : IUnknown
422 {
423     typedef [unique] IOleClientSite * LPOLECLIENTSITE;
424
425     HRESULT SaveObject();
426
427     HRESULT GetMoniker(
428         [in] DWORD dwAssign,
429         [in] DWORD dwWhichMoniker,
430         [out] IMoniker **ppmk);
431
432     HRESULT GetContainer(
433         [out] IOleContainer **ppContainer);
434
435     HRESULT ShowObject();
436
437     HRESULT OnShowWindow(
438         [in] BOOL fShow);
439
440     HRESULT RequestNewObjectLayout();
441 }
442
443
444 /*****************************************************************************
445  * IOleCache interface
446  */
447 [
448     object,
449     uuid(0000011e-0000-0000-c000-000000000046),
450     pointer_default(unique)
451 ]
452 interface IOleCache : IUnknown
453 {
454     typedef [unique] IOleCache *LPOLECACHE;
455
456     HRESULT Cache(
457         [in, unique] FORMATETC *pformatetc,
458         [in] DWORD advf,
459         [out] DWORD *pdwConnection);
460
461     HRESULT Uncache(
462         [in] DWORD dwConnection);
463
464     HRESULT EnumCache(
465         [out] IEnumSTATDATA **ppenumSTATDATA);
466
467     HRESULT InitCache(
468         [in, unique] IDataObject *pDataObject);
469
470     HRESULT SetData(
471         [in, unique] FORMATETC *pformatetc,
472         [in, unique] STGMEDIUM *pmedium,
473         [in] BOOL fRelease);
474 }
475
476
477 /*****************************************************************************
478  * IOleCache2 interface
479  */
480 [
481     object,
482     uuid(00000128-0000-0000-c000-000000000046),
483     pointer_default(unique)
484 ]
485 interface IOleCache2 : IOleCache
486 {
487     typedef [unique] IOleCache2 *LPOLECACHE2;
488
489     const DWORD UPDFCACHE_NODATACACHE = 0x00000001;
490     const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002;
491     const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004;
492     const DWORD UPDFCACHE_NORMALCACHE = 0x00000008;
493     const DWORD UPDFCACHE_IFBLANK     = 0x00000010;
494     const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000;
495
496     const DWORD UPDFCACHE_IFBLANKORONSAVECACHE = (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
497     const DWORD UPDFCACHE_ALL = ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
498     const DWORD UPDFCACHE_ALLBUTNODATACACHE = (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
499
500     typedef enum tagDISCARDCACHE
501     {
502         DISCARDCACHE_SAVEIFDIRTY = 0,
503         DISCARDCACHE_NOSAVE =  1
504     } DISCARDCACHE;
505
506     [local]
507     HRESULT UpdateCache(
508         [in] LPDATAOBJECT pDataObject,
509         [in] DWORD grfUpdf,
510         [in] LPVOID pReserved);
511
512     [call_as(UpdateCache)]
513     HRESULT RemoteUpdateCache(
514         [in] LPDATAOBJECT pDataObject,
515         [in] DWORD grfUpdf,
516         [in] LONG_PTR pReserved);
517
518     HRESULT DiscardCache(
519         [in] DWORD dwDiscardOptions);
520 }
521
522
523 /*****************************************************************************
524  * IOleCacheControl interface
525  */
526 [
527     object,
528     uuid(00000129-0000-0000-c000-000000000046)
529 ]
530 interface IOleCacheControl : IUnknown
531 {
532     typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
533
534     HRESULT OnRun(
535         LPDATAOBJECT pDataObject);
536
537     HRESULT OnStop();
538 }
539
540
541 /*****************************************************************************
542  *  IEnumOLEVERB interface
543  */
544 [
545     object,
546     uuid(00000104-0000-0000-c000-000000000046),
547     pointer_default(unique)
548 ]
549 interface IEnumOLEVERB : IUnknown
550 {
551     typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
552
553     typedef struct tagOLEVERB
554     {
555         LONG lVerb;
556         LPOLESTR lpszVerbName;
557         DWORD fuFlags;
558         DWORD grfAttribs;
559     } OLEVERB, *LPOLEVERB;
560
561     typedef enum tagOLEVERBATTRIB
562     {
563         OLEVERBATTRIB_NEVERDIRTIES = 1,
564         OLEVERBATTRIB_ONCONTAINERMENU = 2
565     } OLEVERBATTRIB;
566
567     [local]
568     HRESULT Next(
569         [in] ULONG celt,
570         [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
571         [out] ULONG *pceltFetched);
572
573     [call_as(Next)]
574     HRESULT RemoteNext(
575         [in] ULONG celt,
576         [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
577         [out] ULONG *pceltFetched);
578
579     HRESULT Skip(
580         [in] ULONG celt);
581
582     HRESULT Reset();
583
584     HRESULT Clone(
585         [out] IEnumOLEVERB **ppenum);
586 }
587
588
589 /*****************************************************************************
590  * IOleObject interface
591  */
592 [
593     object,
594     uuid(00000112-0000-0000-c000-000000000046),
595     pointer_default(unique)
596 ]
597 interface IOleObject : IUnknown
598 {
599     typedef [unique] IOleObject *LPOLEOBJECT;
600
601     typedef enum tagOLEGETMONIKER
602     {
603         OLEGETMONIKER_ONLYIFTHERE = 1,
604         OLEGETMONIKER_FORCEASSIGN = 2,
605         OLEGETMONIKER_UNASSIGN = 3,
606         OLEGETMONIKER_TEMPFORUSER = 4
607     } OLEGETMONIKER;
608
609     typedef enum tagOLEWHICHMK
610     {
611         OLEWHICHMK_CONTAINER = 1,
612         OLEWHICHMK_OBJREL = 2,
613         OLEWHICHMK_OBJFULL = 3
614     } OLEWHICHMK;
615
616     typedef enum tagUSERCLASSTYPE
617     {
618         USERCLASSTYPE_FULL = 1,
619         USERCLASSTYPE_SHORT = 2,
620         USERCLASSTYPE_APPNAME = 3
621     } USERCLASSTYPE;
622
623     typedef enum tagOLEMISC
624     {
625         OLEMISC_RECOMPOSEONRESIZE = 0x1,
626         OLEMISC_ONLYICONIC = 0x2,
627         OLEMISC_INSERTNOTREPLACE = 0x4,
628         OLEMISC_STATIC = 0x8,
629         OLEMISC_CANTLINKINSIDE = 0x10,
630         OLEMISC_CANLINKBYOLE1 = 0x20,
631         OLEMISC_ISLINKOBJECT = 0x40,
632         OLEMISC_INSIDEOUT = 0x80,
633         OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
634         OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
635         OLEMISC_INVISIBLEATRUNTIME = 0x400,
636         OLEMISC_ALWAYSRUN = 0x800,
637         OLEMISC_ACTSLIKEBUTTON = 0x1000,
638         OLEMISC_ACTSLIKELABEL = 0x2000,
639         OLEMISC_NOUIACTIVATE = 0x4000,
640         OLEMISC_ALIGNABLE = 0x8000,
641         OLEMISC_SIMPLEFRAME = 0x10000,
642         OLEMISC_SETCLIENTSITEFIRST = 0x20000,
643         OLEMISC_IMEMODE = 0x40000,
644         OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
645         OLEMISC_WANTSTOMENUMERGE = 0x100000,
646         OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
647     } OLEMISC;
648
649     typedef enum tagOLECLOSE
650     {
651         OLECLOSE_SAVEIFDIRTY = 0,
652         OLECLOSE_NOSAVE = 1,
653         OLECLOSE_PROMPTSAVE = 2
654     } OLECLOSE;
655
656     HRESULT SetClientSite(
657         [in, unique] IOleClientSite *pClientSite);
658
659     HRESULT GetClientSite(
660         [out] IOleClientSite **ppClientSite);
661
662     HRESULT SetHostNames(
663         [in] LPCOLESTR szContainerApp,
664         [in, unique] LPCOLESTR szContainerObj);
665
666     HRESULT Close(
667         [in] DWORD dwSaveOption);
668
669     HRESULT SetMoniker(
670         [in] DWORD dwWhichMoniker,
671         [in, unique] IMoniker *pmk);
672
673     HRESULT GetMoniker(
674         [in] DWORD dwAssign,
675         [in] DWORD dwWhichMoniker,
676         [out] IMoniker **ppmk);
677
678     HRESULT InitFromData(
679         [in, unique] IDataObject *pDataObject,
680         [in] BOOL fCreation,
681         [in] DWORD dwReserved);
682
683     HRESULT GetClipboardData(
684         [in] DWORD dwReserved,
685         [out] IDataObject **ppDataObject);
686
687     HRESULT DoVerb(
688         [in] LONG iVerb,
689         [in, unique] struct tagMSG *lpmsg,
690         [in, unique] IOleClientSite *pActiveSite,
691         [in] LONG lindex,
692         [in] HWND hwndParent,
693         [in, unique] LPCRECT lprcPosRect);
694
695     HRESULT EnumVerbs(
696         [out] IEnumOLEVERB **ppEnumOleVerb);
697
698     HRESULT Update();
699
700     HRESULT IsUpToDate();
701
702     HRESULT GetUserClassID(
703         [out] CLSID *pClsid);
704
705     HRESULT GetUserType(
706         [in] DWORD dwFormOfType,
707         [out] LPOLESTR *pszUserType);
708
709     HRESULT SetExtent(
710         [in] DWORD dwDrawAspect,
711         [in] SIZEL *psizel);
712
713     HRESULT GetExtent(
714         [in] DWORD dwDrawAspect,
715         [out] SIZEL *psizel);
716
717     HRESULT Advise(
718         [in, unique] IAdviseSink *pAdvSink,
719         [out] DWORD *pdwConnection);
720
721     HRESULT Unadvise(
722         [in] DWORD dwConnection);
723
724     HRESULT EnumAdvise(
725         [out] IEnumSTATDATA **ppenumAdvise);
726
727     HRESULT GetMiscStatus(
728         [in] DWORD dwAspect,
729         [out] DWORD *pdwStatus);
730
731     HRESULT SetColorScheme(
732         [in] LOGPALETTE *pLogpal);
733 }
734
735
736 /*****************************************************************************
737  * IOleAdviseHolder interface
738  */
739 [
740     local,
741     object,
742     uuid(00000111-0000-0000-c000-000000000046)
743 ]
744 interface IOleAdviseHolder : IUnknown
745 {
746     typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
747
748     HRESULT Advise(
749         [in, unique] IAdviseSink *pAdvise,
750         [out] DWORD *pdwConnection);
751
752     HRESULT Unadvise(
753         [in] DWORD dwConnection);
754
755     HRESULT EnumAdvise(
756         [out] IEnumSTATDATA **ppenumAdvise);
757
758     HRESULT SendOnRename(
759         [in, unique] IMoniker *pmk);
760
761     HRESULT SendOnSave();
762     HRESULT SendOnClose();
763 }
764
765
766 /*****************************************************************************
767  * IContinue interface
768  */
769 [
770     object,
771     uuid(0000012a-0000-0000-c000-000000000046)
772 ]
773 interface IContinue : IUnknown
774 {
775     HRESULT FContinue();
776 }
777
778
779 /*****************************************************************************
780  * IViewObject interface
781  */
782 [
783     object,
784     uuid(0000010d-0000-0000-c000-000000000046)
785 ]
786 interface IViewObject : IUnknown
787 {
788     typedef [unique] IViewObject *LPVIEWOBJECT;
789
790     [local]
791     HRESULT Draw(
792         [in] DWORD dwDrawAspect,
793         [in] LONG lindex,
794         [in, unique] void * pvAspect,
795         [in, unique] DVTARGETDEVICE *ptd,
796         [in] HDC hdcTargetDev,
797         [in] HDC hdcDraw,
798         [in] LPCRECTL lprcBounds,
799         [in, unique] LPCRECTL lprcWBounds,
800         [in] BOOL (*pfnContinue)(ULONG_PTR dwContinue),
801         [in] ULONG_PTR dwContinue);
802
803     [call_as(Draw)]
804     HRESULT RemoteDraw(
805         [in] DWORD dwDrawAspect,
806         [in] LONG lindex,
807         [in] ULONG_PTR pvAspect,
808         [in, unique] DVTARGETDEVICE *ptd,
809         [in] ULONG_PTR hdcTargetDev,
810         [in] ULONG_PTR hdcDraw,
811         [in] LPCRECTL lprcBounds,
812         [in, unique] LPCRECTL lprcWBounds,
813         [in] IContinue *pContinue);
814
815     [local]
816     HRESULT GetColorSet(
817         [in] DWORD dwDrawAspect,
818         [in] LONG lindex,
819         [in, unique] void *pvAspect,
820         [in, unique] DVTARGETDEVICE *ptd,
821         [in] HDC hicTargetDev,
822         [out] LOGPALETTE **ppColorSet);
823
824     [call_as(GetColorSet)]
825     HRESULT RemoteGetColorSet(
826         [in] DWORD dwDrawAspect,
827         [in] LONG lindex,
828         [in] ULONG_PTR pvAspect,
829         [in, unique] DVTARGETDEVICE *ptd,
830         [in] ULONG_PTR hicTargetDev,
831         [out] LOGPALETTE **ppColorSet);
832
833     [local]
834     HRESULT Freeze(
835         [in] DWORD dwDrawAspect,
836         [in] LONG lindex,
837         [in, unique] void *pvAspect,
838         [out] DWORD *pdwFreeze);
839
840     [call_as(Freeze)]
841     HRESULT RemoteFreeze(
842         [in] DWORD dwDrawAspect,
843         [in] LONG lindex,
844         [in] ULONG_PTR pvAspect,
845         [out] DWORD *pdwFreeze);
846
847     HRESULT Unfreeze(
848         [in] DWORD dwFreeze);
849
850     HRESULT SetAdvise(
851         [in] DWORD aspects,
852         [in] DWORD advf,
853         [in, unique] IAdviseSink *pAdvSink);
854
855     [local]
856     HRESULT GetAdvise(
857         [out, unique] DWORD *pAspects,
858         [out, unique] DWORD *pAdvf,
859         [out] IAdviseSink **ppAdvSink);
860
861     [call_as(GetAdvise)]
862     HRESULT RemoteGetAdvise(
863         [out] DWORD *pAspects,
864         [out] DWORD *pAdvf,
865         [out] IAdviseSink **ppAdvSink);
866 }
867
868
869 /*****************************************************************************
870  * IViewObject2 interface
871  */
872 [
873     object,
874     uuid(00000127-0000-0000-c000-000000000046)
875 ]
876 interface IViewObject2 : IViewObject
877 {
878     typedef [unique] IViewObject2 *LPVIEWOBJECT2;
879
880     HRESULT GetExtent(
881         [in]  DWORD dwDrawAspect,
882         [in]  LONG lindex,
883         [in, unique]  DVTARGETDEVICE* ptd,
884         [out] LPSIZEL lpsizel);
885 }
886
887
888 /*****************************************************************************
889  * IDropSource interface
890  */
891 [
892     local,
893     object,
894     uuid(00000121-0000-0000-c000-000000000046)
895 ]
896 interface IDropSource : IUnknown
897 {
898     typedef [unique] IDropSource *LPDROPSOURCE;
899
900     HRESULT QueryContinueDrag(
901         [in] BOOL fEscapePressed,
902         [in] DWORD grfKeyState);
903
904     HRESULT GiveFeedback(
905         [in] DWORD dwEffect);
906 }
907
908
909 /*****************************************************************************
910  * IDropTarget interface
911  */
912 [
913     object,
914     uuid(00000122-0000-0000-c000-000000000046),
915     pointer_default(unique)
916 ]
917 interface IDropTarget : IUnknown
918 {
919     typedef [unique] IDropTarget *LPDROPTARGET;
920
921     const DWORD MK_ALT = 0x20;
922     const DWORD DROPEFFECT_NONE = 0;
923     const DWORD DROPEFFECT_COPY = 1;
924     const DWORD DROPEFFECT_MOVE = 2;
925     const DWORD DROPEFFECT_LINK = 4;
926     const DWORD DROPEFFECT_SCROLL = 0x80000000;
927     const DWORD DD_DEFSCROLLINSET = 11;
928     const DWORD DD_DEFSCROLLDELAY = 50;
929     const DWORD DD_DEFSCROLLINTERVAL = 50;
930     const DWORD DD_DEFDRAGDELAY = 200;
931     const DWORD DD_DEFDRAGMINDIST = 2;
932
933     HRESULT DragEnter(
934         [in, unique] IDataObject *pDataObj,
935         [in] DWORD grfKeyState,
936         [in] POINTL pt,
937         [in, out] DWORD *pdwEffect);
938
939     HRESULT DragOver(
940         [in] DWORD grfKeyState,
941         [in] POINTL pt,
942         [in, out] DWORD *pdwEffect);
943
944     HRESULT DragLeave();
945
946     HRESULT Drop(
947         [in, unique] IDataObject *pDataObj,
948         [in] DWORD grfKeyState,
949         [in] POINTL pt,
950         [in, out] DWORD *pdwEffect);
951 }