2 * Copyright (C) 1999 Paul Quinn
3 * Copyright (C) 1999 Francis Beaudet
4 * Copyright (C) 2003 Alexandre Julliard
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.
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.
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
24 /*****************************************************************************
28 uuid(b0916c84-7416-101a-bcea-08002b2b79ef)
32 typedef enum tagOLERENDER
38 } OLERENDER, *LPOLERENDER;
40 typedef struct tagOBJECTDESCRIPTOR
48 DWORD dwFullUserTypeName;
50 } OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR,
51 LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR;
55 /*****************************************************************************
56 * IOleWindow interface
60 uuid(00000114-0000-0000-c000-000000000046),
61 pointer_default(unique)
63 interface IOleWindow : IUnknown
65 typedef [unique] IOleWindow *LPOLEWINDOW;
70 HRESULT ContextSensitiveHelp(
71 [in] BOOL fEnterMode);
75 /*****************************************************************************
76 * IOleInPlaceObject interface
80 uuid(00000113-0000-0000-c000-000000000046),
81 pointer_default(unique)
83 interface IOleInPlaceObject : IOleWindow
85 typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
87 HRESULT InPlaceDeactivate();
89 HRESULT UIDeactivate();
91 HRESULT SetObjectRects(
92 [in] LPCRECT lprcPosRect,
93 [in] LPCRECT lprcClipRect);
95 HRESULT ReactivateAndUndo();
99 /*****************************************************************************
100 * IOleInPlaceActiveObject interface
102 interface IOleInPlaceUIWindow; /* forward declaration */
105 uuid(00000117-0000-0000-c000-000000000046)
107 interface IOleInPlaceActiveObject : IOleWindow
109 typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
111 cpp_quote("struct tagMSG;") /* FIXME */
114 HRESULT TranslateAccelerator(
115 [in] struct tagMSG *lpmsg);
117 [call_as(TranslateAccelerator)]
118 HRESULT RemoteTranslateAccelerator();
120 HRESULT OnFrameWindowActivate(
121 [in] BOOL fActivate);
123 HRESULT OnDocWindowActivate(
124 [in] BOOL fActivate);
127 HRESULT ResizeBorder(
128 [in] LPCRECT prcBorder,
129 [in, unique] IOleInPlaceUIWindow *pUIWindow,
130 [in] BOOL fFrameWindow);
132 [call_as(ResizeBorder)]
133 HRESULT RemoteResizeBorder(
134 [in] LPCRECT prcBorder,
136 [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
137 [in] BOOL fFrameWindow);
139 HRESULT EnableModeless(
144 /*****************************************************************************
145 * IOleInPlaceUIWindow interface
149 uuid(00000115-0000-0000-c000-000000000046),
150 pointer_default(unique)
153 interface IOleInPlaceUIWindow : IOleWindow
155 typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
157 typedef RECT BORDERWIDTHS;
158 typedef LPRECT LPBORDERWIDTHS;
159 typedef LPCRECT LPCBORDERWIDTHS;
162 [out] LPRECT lprectBorder);
164 HRESULT RequestBorderSpace(
165 [in, unique] LPCBORDERWIDTHS pborderwidths);
167 HRESULT SetBorderSpace(
168 [in, unique] LPCBORDERWIDTHS pborderwidths);
170 HRESULT SetActiveObject(
171 [in, unique] IOleInPlaceActiveObject *pActiveObject,
172 [in, string, unique] LPCOLESTR pszObjName);
176 /*****************************************************************************
177 * IOleInPlaceFrame interface
181 uuid(00000116-0000-0000-c000-000000000046),
182 pointer_default(unique)
184 interface IOleInPlaceFrame : IOleInPlaceUIWindow
186 typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
188 typedef struct tagOleInPlaceFrameInfo
195 } OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
197 typedef struct tagOleMenuGroupWidths
200 } OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
202 typedef HGLOBAL HOLEMENU;
205 [in] HMENU hmenuShared,
206 [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
209 [in] HMENU hmenuShared,
210 [in] HOLEMENU holemenu,
211 [in] HWND hwndActiveObject);
214 [in] HMENU hmenuShared);
216 HRESULT SetStatusText(
217 [in, unique] LPCOLESTR pszStatusText);
219 HRESULT EnableModeless(
222 HRESULT TranslateAccelerator(
223 [in] struct tagMSG *lpmsg,
228 /*****************************************************************************
229 * IOleInPlaceSite interface
233 uuid(00000119-0000-0000-c000-000000000046),
234 pointer_default(unique)
236 interface IOleInPlaceSite : IOleWindow
238 typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
240 HRESULT CanInPlaceActivate();
241 HRESULT OnInPlaceActivate();
242 HRESULT OnUIActivate();
244 HRESULT GetWindowContext(
245 [out] IOleInPlaceFrame **ppFrame,
246 [out] IOleInPlaceUIWindow **ppDoc,
247 [out] LPRECT lprcPosRect,
248 [out] LPRECT lprcClipRect,
249 [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo);
252 [in] SIZE scrollExtant);
254 HRESULT OnUIDeactivate(
255 [in] BOOL fUndoable);
257 HRESULT OnInPlaceDeactivate();
258 HRESULT DiscardUndoState();
259 HRESULT DeactivateAndUndo();
261 HRESULT OnPosRectChange(
262 [in] LPCRECT lprcPosRect);
266 /*****************************************************************************
267 * IParseDisplayName interface
271 uuid(0000011a-0000-0000-c000-000000000046),
272 pointer_default(unique)
274 interface IParseDisplayName : IUnknown
276 typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
278 HRESULT ParseDisplayName(
279 [in, unique] IBindCtx *pbc,
280 [in] LPOLESTR pszDisplayName,
281 [out] ULONG *pchEaten,
282 [out] IMoniker **ppmkOut);
286 /*****************************************************************************
287 * IOleContainer interface
291 uuid(0000011b-0000-0000-c000-000000000046),
292 pointer_default(unique)
294 interface IOleContainer : IParseDisplayName
296 typedef [unique] IOleContainer *LPOLECONTAINER;
300 [out] IEnumUnknown **ppenum);
302 HRESULT LockContainer(
307 /*****************************************************************************
308 * IOleItemContainer interface
312 uuid(0000011c-0000-0000-c000-000000000046),
313 pointer_default(unique)
315 interface IOleItemContainer : IOleContainer
317 typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
319 typedef enum tagBINDSPEED
321 BINDSPEED_INDEFINITE = 1,
322 BINDSPEED_MODERATE = 2,
323 BINDSPEED_IMMEDIATE = 3
326 typedef enum tagOLECONTF
328 OLECONTF_EMBEDDINGS = 1,
331 OLECONTF_OLNYUSER = 8,
332 OLECONTF_ONLYIFRUNNING = 16
335 cpp_quote("#ifdef __WINESRC__")
336 cpp_quote("#undef GetObject")
339 [in] LPOLESTR pszItem,
340 [in] DWORD dwSpeedNeeded,
341 [in, unique] IBindCtx *pbc,
343 [out, iid_is(riid)] void **ppvObject);
345 HRESULT GetObjectStorage(
346 [in] LPOLESTR pszItem,
347 [in, unique] IBindCtx *pbc,
349 [out, iid_is(riid)] void **ppvStorage);
352 [in] LPOLESTR pszItem);
356 /*****************************************************************************
361 uuid(0000011d-0000-0000-c000-000000000046)
363 interface IOleLink : IUnknown
365 typedef [unique] IOleLink *LPOLELINK;
367 typedef enum tagOLEUPDATE
369 OLEUPDATE_ALWAYS = 1,
371 } OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE;
373 typedef enum tagOLELINKBIND
375 OLELINKBIND_EVENIFCLASSDIFF = 1
378 HRESULT SetUpdateOptions(
379 [in] DWORD dwUpdateOpt);
381 HRESULT GetUpdateOptions(
382 [out] DWORD *pdwUpdateOpt);
384 HRESULT SetSourceMoniker(
385 [in, unique] IMoniker *pmk,
386 [in] REFCLSID rclsid);
388 HRESULT GetSourceMoniker(
389 [out] IMoniker **ppmk);
391 HRESULT SetSourceDisplayName(
392 [in]LPCOLESTR pszStatusText);
394 HRESULT GetSourceDisplayName(
395 [out] LPOLESTR *ppszDisplayName);
397 HRESULT BindToSource(
398 [in] DWORD bindflags,
399 [in, unique] IBindCtx *pbc);
401 HRESULT BindIfRunning();
403 HRESULT GetBoundSource(
404 [out] IUnknown **ppunk);
406 HRESULT UnbindSource();
409 [in, unique] IBindCtx *pbc);
413 /*****************************************************************************
414 * IOleClientSite interface
418 uuid(00000118-0000-0000-c000-000000000046),
419 pointer_default(unique)
421 interface IOleClientSite : IUnknown
423 typedef [unique] IOleClientSite * LPOLECLIENTSITE;
425 HRESULT SaveObject();
429 [in] DWORD dwWhichMoniker,
430 [out] IMoniker **ppmk);
432 HRESULT GetContainer(
433 [out] IOleContainer **ppContainer);
435 HRESULT ShowObject();
437 HRESULT OnShowWindow(
440 HRESULT RequestNewObjectLayout();
444 /*****************************************************************************
445 * IOleCache interface
449 uuid(0000011e-0000-0000-c000-000000000046),
450 pointer_default(unique)
452 interface IOleCache : IUnknown
454 typedef [unique] IOleCache *LPOLECACHE;
457 [in, unique] FORMATETC *pformatetc,
459 [out] DWORD *pdwConnection);
462 [in] DWORD dwConnection);
465 [out] IEnumSTATDATA **ppenumSTATDATA);
468 [in, unique] IDataObject *pDataObject);
471 [in, unique] FORMATETC *pformatetc,
472 [in, unique] STGMEDIUM *pmedium,
477 /*****************************************************************************
478 * IOleCache2 interface
482 uuid(00000128-0000-0000-c000-000000000046),
483 pointer_default(unique)
485 interface IOleCache2 : IOleCache
487 typedef [unique] IOleCache2 *LPOLECACHE2;
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;
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)));
500 typedef enum tagDISCARDCACHE
502 DISCARDCACHE_SAVEIFDIRTY = 0,
503 DISCARDCACHE_NOSAVE = 1
508 [in] LPDATAOBJECT pDataObject,
510 [in] LPVOID pReserved);
512 [call_as(UpdateCache)]
513 HRESULT RemoteUpdateCache(
514 [in] LPDATAOBJECT pDataObject,
516 [in] LONG_PTR pReserved);
518 HRESULT DiscardCache(
519 [in] DWORD dwDiscardOptions);
523 /*****************************************************************************
524 * IOleCacheControl interface
528 uuid(00000129-0000-0000-c000-000000000046)
530 interface IOleCacheControl : IUnknown
532 typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
535 LPDATAOBJECT pDataObject);
541 /*****************************************************************************
542 * IEnumOLEVERB interface
546 uuid(00000104-0000-0000-c000-000000000046),
547 pointer_default(unique)
549 interface IEnumOLEVERB : IUnknown
551 typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
553 typedef struct tagOLEVERB
556 LPOLESTR lpszVerbName;
559 } OLEVERB, *LPOLEVERB;
561 typedef enum tagOLEVERBATTRIB
563 OLEVERBATTRIB_NEVERDIRTIES = 1,
564 OLEVERBATTRIB_ONCONTAINERMENU = 2
570 [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
571 [out] ULONG *pceltFetched);
576 [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
577 [out] ULONG *pceltFetched);
585 [out] IEnumOLEVERB **ppenum);
589 /*****************************************************************************
590 * IOleObject interface
594 uuid(00000112-0000-0000-c000-000000000046),
595 pointer_default(unique)
597 interface IOleObject : IUnknown
599 typedef [unique] IOleObject *LPOLEOBJECT;
601 typedef enum tagOLEGETMONIKER
603 OLEGETMONIKER_ONLYIFTHERE = 1,
604 OLEGETMONIKER_FORCEASSIGN = 2,
605 OLEGETMONIKER_UNASSIGN = 3,
606 OLEGETMONIKER_TEMPFORUSER = 4
609 typedef enum tagOLEWHICHMK
611 OLEWHICHMK_CONTAINER = 1,
612 OLEWHICHMK_OBJREL = 2,
613 OLEWHICHMK_OBJFULL = 3
616 typedef enum tagUSERCLASSTYPE
618 USERCLASSTYPE_FULL = 1,
619 USERCLASSTYPE_SHORT = 2,
620 USERCLASSTYPE_APPNAME = 3
623 typedef enum tagOLEMISC
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
649 typedef enum tagOLECLOSE
651 OLECLOSE_SAVEIFDIRTY = 0,
653 OLECLOSE_PROMPTSAVE = 2
656 HRESULT SetClientSite(
657 [in, unique] IOleClientSite *pClientSite);
659 HRESULT GetClientSite(
660 [out] IOleClientSite **ppClientSite);
662 HRESULT SetHostNames(
663 [in] LPCOLESTR szContainerApp,
664 [in, unique] LPCOLESTR szContainerObj);
667 [in] DWORD dwSaveOption);
670 [in] DWORD dwWhichMoniker,
671 [in, unique] IMoniker *pmk);
675 [in] DWORD dwWhichMoniker,
676 [out] IMoniker **ppmk);
678 HRESULT InitFromData(
679 [in, unique] IDataObject *pDataObject,
681 [in] DWORD dwReserved);
683 HRESULT GetClipboardData(
684 [in] DWORD dwReserved,
685 [out] IDataObject **ppDataObject);
689 [in, unique] struct tagMSG *lpmsg,
690 [in, unique] IOleClientSite *pActiveSite,
692 [in] HWND hwndParent,
693 [in, unique] LPCRECT lprcPosRect);
696 [out] IEnumOLEVERB **ppEnumOleVerb);
700 HRESULT IsUpToDate();
702 HRESULT GetUserClassID(
703 [out] CLSID *pClsid);
706 [in] DWORD dwFormOfType,
707 [out] LPOLESTR *pszUserType);
710 [in] DWORD dwDrawAspect,
714 [in] DWORD dwDrawAspect,
715 [out] SIZEL *psizel);
718 [in, unique] IAdviseSink *pAdvSink,
719 [out] DWORD *pdwConnection);
722 [in] DWORD dwConnection);
725 [out] IEnumSTATDATA **ppenumAdvise);
727 HRESULT GetMiscStatus(
729 [out] DWORD *pdwStatus);
731 HRESULT SetColorScheme(
732 [in] LOGPALETTE *pLogpal);
736 /*****************************************************************************
737 * IOleAdviseHolder interface
742 uuid(00000111-0000-0000-c000-000000000046)
744 interface IOleAdviseHolder : IUnknown
746 typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
749 [in, unique] IAdviseSink *pAdvise,
750 [out] DWORD *pdwConnection);
753 [in] DWORD dwConnection);
756 [out] IEnumSTATDATA **ppenumAdvise);
758 HRESULT SendOnRename(
759 [in, unique] IMoniker *pmk);
761 HRESULT SendOnSave();
762 HRESULT SendOnClose();
766 /*****************************************************************************
767 * IContinue interface
771 uuid(0000012a-0000-0000-c000-000000000046)
773 interface IContinue : IUnknown
779 /*****************************************************************************
780 * IViewObject interface
784 uuid(0000010d-0000-0000-c000-000000000046)
786 interface IViewObject : IUnknown
788 typedef [unique] IViewObject *LPVIEWOBJECT;
792 [in] DWORD dwDrawAspect,
794 [in, unique] void * pvAspect,
795 [in, unique] DVTARGETDEVICE *ptd,
796 [in] HDC hdcTargetDev,
798 [in] LPCRECTL lprcBounds,
799 [in, unique] LPCRECTL lprcWBounds,
800 [in] BOOL (*pfnContinue)(ULONG_PTR dwContinue),
801 [in] ULONG_PTR dwContinue);
805 [in] DWORD dwDrawAspect,
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);
817 [in] DWORD dwDrawAspect,
819 [in, unique] void *pvAspect,
820 [in, unique] DVTARGETDEVICE *ptd,
821 [in] HDC hicTargetDev,
822 [out] LOGPALETTE **ppColorSet);
824 [call_as(GetColorSet)]
825 HRESULT RemoteGetColorSet(
826 [in] DWORD dwDrawAspect,
828 [in] ULONG_PTR pvAspect,
829 [in, unique] DVTARGETDEVICE *ptd,
830 [in] ULONG_PTR hicTargetDev,
831 [out] LOGPALETTE **ppColorSet);
835 [in] DWORD dwDrawAspect,
837 [in, unique] void *pvAspect,
838 [out] DWORD *pdwFreeze);
841 HRESULT RemoteFreeze(
842 [in] DWORD dwDrawAspect,
844 [in] ULONG_PTR pvAspect,
845 [out] DWORD *pdwFreeze);
848 [in] DWORD dwFreeze);
853 [in, unique] IAdviseSink *pAdvSink);
857 [out, unique] DWORD *pAspects,
858 [out, unique] DWORD *pAdvf,
859 [out] IAdviseSink **ppAdvSink);
862 HRESULT RemoteGetAdvise(
863 [out] DWORD *pAspects,
865 [out] IAdviseSink **ppAdvSink);
869 /*****************************************************************************
870 * IViewObject2 interface
874 uuid(00000127-0000-0000-c000-000000000046)
876 interface IViewObject2 : IViewObject
878 typedef [unique] IViewObject2 *LPVIEWOBJECT2;
881 [in] DWORD dwDrawAspect,
883 [in, unique] DVTARGETDEVICE* ptd,
884 [out] LPSIZEL lpsizel);
888 /*****************************************************************************
889 * IDropSource interface
894 uuid(00000121-0000-0000-c000-000000000046)
896 interface IDropSource : IUnknown
898 typedef [unique] IDropSource *LPDROPSOURCE;
900 HRESULT QueryContinueDrag(
901 [in] BOOL fEscapePressed,
902 [in] DWORD grfKeyState);
904 HRESULT GiveFeedback(
905 [in] DWORD dwEffect);
909 /*****************************************************************************
910 * IDropTarget interface
914 uuid(00000122-0000-0000-c000-000000000046),
915 pointer_default(unique)
917 interface IDropTarget : IUnknown
919 typedef [unique] IDropTarget *LPDROPTARGET;
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;
934 [in, unique] IDataObject *pDataObj,
935 [in] DWORD grfKeyState,
937 [in, out] DWORD *pdwEffect);
940 [in] DWORD grfKeyState,
942 [in, out] DWORD *pdwEffect);
947 [in, unique] IDataObject *pDataObj,
948 [in] DWORD grfKeyState,
950 [in, out] DWORD *pdwEffect);