xref: /reactos/sdk/include/psdk/ocidl.idl (revision 40462c92)
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#ifndef DO_NO_IMPORTS
22import "oleidl.idl";
23import "oaidl.idl";
24import "servprov.idl";
25import "urlmon.idl";
26#endif
27
28/*****************************************************************************
29 * IOleControlTypes interface
30 */
31[
32    pointer_default(unique)
33]
34interface IOleControlTypes
35{
36    typedef [v1_enum] enum tagUASFLAGS
37    {
38        UAS_NORMAL       = 0x0,
39        UAS_BLOCKED      = 0x1,
40        UAS_NOPARENTABLE = 0x2,
41        UAS_MASK         = 0x3
42    } UASFLAGS;
43
44    typedef enum tagREADYSTATE
45    {
46        READYSTATE_UNINITIALIZED  = 0,
47        READYSTATE_LOADING  = 1,
48        READYSTATE_LOADED = 2,
49        READYSTATE_INTERACTIVE  = 3,
50        READYSTATE_COMPLETE = 4
51    } READYSTATE;
52
53    typedef struct tagVARIANT_BLOB
54    {
55        DWORD clSize;
56        DWORD rpcReserved;
57        [size_is(clSize-1)] ULONGLONG ahData[];
58    } wireVARIANT_BLOB;
59
60    typedef struct tagUserVARIANT
61    {
62      wireVARIANT_BLOB pVarBlob;
63    } UserVARIANT;
64}
65
66
67/*****************************************************************************
68 * IFont interface
69 */
70[
71    object,
72    uuid(bef6e002-a874-101a-8bba-00aa00300cab),
73    pointer_default(unique)
74]
75interface IFont : IUnknown
76{
77    typedef IFont *LPFONT;
78    typedef TEXTMETRICW TEXTMETRICOLE, *LPTEXTMETRICOLE;
79
80    [propget] HRESULT Name( [out] BSTR *pname);
81    [propput] HRESULT Name( [in] BSTR name );
82    [propget] HRESULT Size( [out] CY *psize );
83    [propput] HRESULT Size( [in] CY size );
84    [propget] HRESULT Bold( [out] BOOL *pbold );
85    [propput] HRESULT Bold( [in] BOOL bold );
86    [propget] HRESULT Italic( [out] BOOL *pitalic );
87    [propput] HRESULT Italic( [in] BOOL italic );
88    [propget] HRESULT Underline( [out] BOOL *punderline );
89    [propput] HRESULT Underline( [in] BOOL underline );
90    [propget] HRESULT Strikethrough( [out] BOOL *pstrikethrough );
91    [propput] HRESULT Strikethrough( [in] BOOL strikethrough );
92    [propget] HRESULT Weight( [out] SHORT *pweight );
93    [propput] HRESULT Weight( [in] SHORT weight );
94    [propget] HRESULT Charset( [out] SHORT *pcharset );
95    [propput] HRESULT Charset( [in] SHORT charset );
96    [propget] HRESULT hFont( [out] HFONT *phfont );
97    HRESULT Clone( [out] IFont **ppfont );
98    HRESULT IsEqual( [in] IFont *pFontOther );
99    HRESULT SetRatio( [in] LONG cyLogical, [in] LONG cyHimetric );
100    HRESULT QueryTextMetrics( [out] TEXTMETRICOLE * ptm );
101    HRESULT AddRefHfont( [in] HFONT hfont );
102    HRESULT ReleaseHfont( [in] HFONT hfont );
103    HRESULT SetHdc( [in] HDC hdc );
104}
105
106
107/*****************************************************************************
108 * IFontDisp interface
109 */
110[
111    object,
112    uuid(bef6e003-a874-101a-8bba-00aa00300cab),
113    pointer_default(unique)
114]
115interface IFontDisp : IDispatch
116{
117    typedef IFontDisp *LPFONTDISP;
118}
119
120
121/*****************************************************************************
122 * IFontEventsDisp interface
123 */
124[
125    object,
126    uuid(4ef6100a-af88-11d0-9846-00c04fc29993),
127    pointer_default(unique)
128]
129interface IFontEventsDisp : IDispatch
130{
131    typedef IFontEventsDisp *LPFONTEVENTS;
132}
133
134
135/*****************************************************************************
136 * IPicture interface
137 */
138[
139    object,
140    uuid(7bf80980-bf32-101a-8bbb-00aa00300cab),
141    pointer_default(unique)
142]
143interface IPicture : IUnknown
144{
145    typedef IPicture *LPPICTURE;
146
147    typedef enum tagPicture
148    {
149        PICTURE_SCALABLE = 0x1,
150        PICTURE_TRANSPARENT = 0x2
151    } PICTUREATTRIBUTES;
152
153    typedef UINT OLE_HANDLE;
154    typedef LONG OLE_XPOS_HIMETRIC;
155    typedef LONG OLE_YPOS_HIMETRIC;
156    typedef LONG OLE_XSIZE_HIMETRIC;
157    typedef LONG OLE_YSIZE_HIMETRIC;
158
159    [propget] HRESULT Handle( [out] OLE_HANDLE *pHandle );
160    [propget] HRESULT hPal( [out] OLE_HANDLE *phPal );
161    [propget] HRESULT Type( [out] SHORT *pType );
162    [propget] HRESULT Width( [out] OLE_XSIZE_HIMETRIC *pWidth );
163    [propget] HRESULT Height( [out] OLE_YSIZE_HIMETRIC *pHeight );
164
165    HRESULT Render(
166        [in] HDC hdc,
167        [in] LONG x,
168        [in] LONG y,
169        [in] LONG cx,
170        [in] LONG cy,
171        [in] OLE_XPOS_HIMETRIC xSrc,
172        [in] OLE_YPOS_HIMETRIC ySrc,
173        [in] OLE_XSIZE_HIMETRIC cxSrc,
174        [in] OLE_YSIZE_HIMETRIC cySrc,
175        [in] LPCRECT pRcWBounds);
176
177    HRESULT set_hPal( [in] OLE_HANDLE hPal );
178
179    [propget] HRESULT CurDC( [out] HDC *phDC );
180
181    HRESULT SelectPicture(
182        [in] HDC hDCIn,
183        [out] HDC * phDCOut,
184        [out] OLE_HANDLE * phBmpOut);
185
186    [propget] HRESULT KeepOriginalFormat( [out] BOOL *pKeep );
187
188    [propput] HRESULT KeepOriginalFormat( [in] BOOL keep );
189
190    HRESULT PictureChanged();
191
192    HRESULT SaveAsFile(
193        [in] LPSTREAM pStream,
194        [in] BOOL fSaveMemCopy,
195        [out] LONG *pCbSize);
196
197    [propget] HRESULT Attributes( [out] DWORD *pDwAttr );
198}
199
200
201/*****************************************************************************
202 * IPictureDisp interface
203 */
204[
205    object,
206    uuid(7bf80981-bf32-101a-8bbb-00aa00300cab),
207    pointer_default(unique)
208]
209interface IPictureDisp : IDispatch
210{
211    typedef IPictureDisp *LPPICTUREDISP;
212}
213
214
215/*****************************************************************************
216 * IOleControl interface
217 */
218[
219    object,
220    uuid(b196b288-bab4-101a-b69c-00aa00341d07),
221    pointer_default(unique)
222]
223
224interface IOleControl : IUnknown
225{
226    typedef IOleControl *LPOLECONTROL;
227
228    typedef struct tagCONTROLINFO
229    {
230        ULONG cb;
231        HACCEL hAccel;
232        USHORT cAccel;
233        DWORD dwFlags;
234    } CONTROLINFO, *LPCONTROLINFO;
235
236    typedef enum tagCTRLINFO
237    {
238        CTRLINFO_EATS_RETURN = 1,
239        CTRLINFO_EATS_ESCAPE = 2
240    } CTRLINFO;
241
242    HRESULT GetControlInfo( [out] CONTROLINFO *pCI );
243    HRESULT OnMnemonic( [in] MSG *pMsg );
244    HRESULT OnAmbientPropertyChange( [in] DISPID dispID );
245    HRESULT FreezeEvents( [in] BOOL bFreeze );
246}
247
248
249/*****************************************************************************
250 * IOleControlSite interface
251 */
252[
253    object,
254    uuid(b196b289-bab4-101a-b69c-00aa00341d07),
255    pointer_default(unique)
256]
257interface IOleControlSite : IUnknown
258{
259    typedef IOleControlSite *LPOLECONTROLSITE;
260
261    typedef struct tagPOINTF
262    {
263        FLOAT x;
264        FLOAT y;
265    } POINTF, *LPPOINTF;
266
267    typedef enum tagXFORMCOORDS
268    {
269	XFORMCOORDS_POSITION = 0x1,
270	XFORMCOORDS_SIZE = 0x2,
271	XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
272	XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8,
273        XFORMCOORDS_EVENTCOMPAT = 0x10
274    } XFORMCOORDS;
275
276    HRESULT OnControlInfoChanged();
277
278    HRESULT LockInPlaceActive( [in] BOOL fLock );
279
280    HRESULT GetExtendedControl( [out] IDispatch ** ppDisp );
281
282    HRESULT TransformCoords(
283        [in, out] POINTL *pPtlHimetric,
284        [in, out] POINTF *pPtfContainer,
285        [in] DWORD dwFlags);
286
287    HRESULT TranslateAccelerator( [in] MSG *pMsg, [in] DWORD grfModifiers );
288
289    HRESULT OnFocus( [in] BOOL fGotFocus );
290
291    HRESULT ShowPropertyFrame();
292}
293
294
295/*****************************************************************************
296 * IOleInPlaceSiteEx interface
297 */
298[
299    object,
300    uuid(9c2cad80-3424-11cf-b670-00aa004cd6d8),
301    pointer_default(unique)
302]
303interface IOleInPlaceSiteEx : IOleInPlaceSite
304{
305    typedef IOleInPlaceSiteEx *LPOLEINPLACESITEEX;
306
307    typedef enum tagACTIVATEFLAGS
308    {
309        ACTIVATE_WINDOWLESS = 1
310    } ACTIVATE_FLAGS;
311
312    HRESULT OnInPlaceActivateEx( [out] BOOL * pfNoRedraw, [in] DWORD dwFlags );
313    HRESULT OnInPlaceDeactivateEx( [in] BOOL fNoRedraw );
314    HRESULT RequestUIActivate();
315}
316
317
318/*****************************************************************************
319 * IOleInPlaceSiteWindowless interface
320 */
321[
322    local,
323    object,
324    uuid(922eada0-3424-11cf-b670-00aa004cd6d8),
325    pointer_default(unique)
326]
327interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx
328{
329    typedef IOleInPlaceSiteWindowless *LPOLEINPLACESITEWINDOWLESS;
330
331    typedef enum tagOLEDCFLAGS
332    {
333        OLEDC_NODRAW = 0x1,
334        OLEDC_PAINTBKGND = 0x2,
335        OLEDC_OFFSCREEN = 0x4
336    } OLEDCFLAGS;
337
338    HRESULT CanWindowlessActivate();
339
340    HRESULT GetCapture();
341
342    HRESULT SetCapture( [in] BOOL fCapture );
343
344    HRESULT GetFocus();
345
346    HRESULT SetFocus( [in] BOOL fFocus );
347
348    HRESULT GetDC(
349        [in] LPCRECT pRect,
350        [in] DWORD grfFlags,
351        [out] HDC *phDC);
352
353    HRESULT ReleaseDC( [in] HDC hDC );
354
355    HRESULT InvalidateRect(
356        [in] LPCRECT pRect,
357        [in] BOOL fErase);
358
359    HRESULT InvalidateRgn(
360        [in] HRGN hRGN,
361        [in] BOOL fErase);
362
363    HRESULT ScrollRect(
364        [in] INT dx,
365        [in] INT dy,
366        [in] LPCRECT pRectScroll,
367        [in] LPCRECT pRectClip);
368
369    HRESULT AdjustRect( [in, out] LPRECT prc );
370
371    HRESULT OnDefWindowMessage(
372        [in] UINT msg,
373        [in] WPARAM wParam,
374        [in] LPARAM lParam,
375        [out] LRESULT *plResult);
376}
377
378
379/*****************************************************************************
380 * IOleInPlaceObjectWindowless interface
381 */
382[
383    local,
384    object,
385    uuid(1c2056cc-5ef4-101b-8bc8-00aa003e3b29),
386    pointer_default(unique)
387]
388interface IOleInPlaceObjectWindowless : IOleInPlaceObject
389{
390    typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS;
391
392    HRESULT OnWindowMessage(
393        [in] UINT msg,
394        [in] WPARAM wParam,
395        [in] LPARAM lParam,
396        [out] LRESULT *plResult);
397
398    HRESULT GetDropTarget( [out] IDropTarget **ppDropTarget );
399}
400
401
402/*****************************************************************************
403 * IClassFactory2 interface
404 */
405[
406    object,
407    uuid(b196b28f-bab4-101a-b69c-00aa00341d07),
408    pointer_default(unique)
409]
410interface IClassFactory2 : IClassFactory
411{
412    typedef IClassFactory2 *LPCLASSFACTORY2;
413
414    typedef struct tagLICINFO
415    {
416        LONG cbLicInfo;
417        BOOL fRuntimeKeyAvail;
418        BOOL fLicVerified;
419    } LICINFO, *LPLICINFO;
420
421    HRESULT GetLicInfo( [out] LICINFO *pLicInfo );
422
423    HRESULT RequestLicKey(
424        [in] DWORD dwReserved,
425        [out] BSTR *pBstrKey);
426
427    [local]
428    HRESULT CreateInstanceLic(
429        [in] IUnknown *pUnkOuter,
430        [in] IUnknown *pUnkReserved,
431        [in] REFIID riid,
432        [in] BSTR bstrKey,
433        [out, iid_is(riid)] PVOID *ppvObj);
434
435    [call_as(CreateInstanceLic)]
436    HRESULT RemoteCreateInstanceLic(
437        [in] REFIID riid,
438        [in] BSTR bstrKey,
439        [out, iid_is(riid)] IUnknown **ppvObj);
440}
441
442
443/*****************************************************************************
444 * IViewObject interface
445 */
446[
447    local,
448    object,
449    uuid(3af24292-0c96-11ce-a0cf-00aa00600ab8),
450    pointer_default(unique)
451]
452interface IViewObjectEx : IViewObject2
453{
454    typedef IViewObjectEx *LPVIEWOBJECTEX;
455
456    typedef enum tagVIEWSTATUS
457    {
458        VIEWSTATUS_OPAQUE = 1,
459        VIEWSTATUS_SOLIDBKGND = 2,
460        VIEWSTATUS_DVASPECTOPAQUE = 4,
461        VIEWSTATUS_DVASPECTTRANSPARENT = 8,
462        VIEWSTATUS_SURFACE = 16,
463        VIEWSTATUS_3DSURFACE = 32
464    } VIEWSTATUS;
465
466    typedef enum tagHITRESULT
467    {
468        HITRESULT_OUTSIDE = 0,
469        HITRESULT_TRANSPARENT = 1,
470        HITRESULT_CLOSE = 2,
471        HITRESULT_HIT = 3
472    } HITRESULT;
473
474    typedef enum tagDVASPECT2
475    {
476        DVASPECT_OPAQUE = 16,
477        DVASPECT_TRANSPARENT = 32
478    } DVASPECT2;
479
480    typedef struct tagExtentInfo
481    {
482        ULONG cb;
483        DWORD dwExtentMode;
484        SIZEL sizelProposed;
485    } DVEXTENTINFO;
486
487    typedef enum tagAspectInfoFlag
488    {
489        DVASPECTINFOFLAG_CANOPTIMIZE = 1
490    } DVASPECTINFOFLAG;
491
492    typedef struct tagAspectInfo
493    {
494        ULONG cb;
495        DWORD dwFlags;
496    } DVASPECTINFO;
497
498    HRESULT GetRect(
499        [in] DWORD dwAspect,
500        [out] LPRECTL pRect);
501
502    HRESULT GetViewStatus( [out] DWORD *pdwStatus );
503
504    HRESULT QueryHitPoint(
505        [in] DWORD dwAspect,
506        [in] LPCRECT pRectBounds,
507        [in] POINT ptlLoc,
508        [in] LONG lCloseHint,
509        [out] DWORD *pHitResult);
510
511    HRESULT QueryHitRect(
512        [in] DWORD dwAspect,
513        [in] LPCRECT pRectBounds,
514        [in] LPCRECT pRectLoc,
515        [in] LONG lCloseHint,
516        [out] DWORD *pHitResult);
517
518    HRESULT GetNaturalExtent (
519        [in] DWORD dwAspect,
520        [in] LONG lindex,
521        [in] DVTARGETDEVICE *ptd,
522        [in] HDC hicTargetDev,
523        [in] DVEXTENTINFO *pExtentInfo,
524        [out] LPSIZEL pSizel);
525}
526
527
528/*****************************************************************************
529 * IProvideClassInfo interface
530 */
531[
532    object,
533    uuid(b196b283-bab4-101a-b69c-00aa00341d07),
534    pointer_default(unique)
535]
536interface IProvideClassInfo : IUnknown
537{
538    typedef IProvideClassInfo *LPPROVIDECLASSINFO;
539
540cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
541cpp_quote("#undef GetClassInfo")
542cpp_quote("#endif")
543
544    HRESULT GetClassInfo( [out] ITypeInfo ** ppTI );
545}
546
547
548/*****************************************************************************
549 * IProvideClassInfo2 interface
550 */
551[
552    object,
553    uuid(a6bc3ac0-dbaa-11ce-9de3-00aa004bb851),
554    pointer_default(unique)
555]
556interface IProvideClassInfo2 : IProvideClassInfo
557{
558    typedef IProvideClassInfo2 *LPPROVIDECLASSINFO2;
559
560    typedef enum tagGUIDKIND
561    {
562        GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
563    } GUIDKIND;
564
565    HRESULT GetGUID(
566        [in]  DWORD dwGuidKind,
567        [out] GUID *pGUID );
568}
569
570
571[
572    object,
573    uuid(a7aba9c1-8983-11cf-8f20-00805f2cd064),
574    pointer_default(unique)
575]
576interface IProvideMultipleClassInfo : IProvideClassInfo2
577{
578    cpp_quote("#define MULTICLASSINFO_GETTYPEINFO           0x00000001")
579    cpp_quote("#define MULTICLASSINFO_GETNUMRESERVEDDISPIDS 0x00000002")
580    cpp_quote("#define MULTICLASSINFO_GETIIDPRIMARY         0x00000004")
581    cpp_quote("#define MULTICLASSINFO_GETIIDSOURCE          0x00000008")
582
583    cpp_quote("#define TIFLAGS_EXTENDDISPATCHONLY           0x00000001")
584
585    typedef IProvideMultipleClassInfo *LPPROVIDEMULTIPLECLASSINFO;
586
587    HRESULT GetMultiTypeInfoCount(
588        [out] ULONG *pcti);
589
590    HRESULT GetInfoOfIndex(
591        [in] ULONG iti,
592        [in] DWORD dwFlags,
593        [out] ITypeInfo **pptiCoClass,
594        [out] DWORD *pdwTIFlags,
595        [out] ULONG *pcdispidReserved,
596        [out] IID *piidPrimary,
597        [out] IID *piidSource);
598}
599
600
601/*****************************************************************************
602 * IConnectionPoint interface
603 */
604interface IConnectionPointContainer; /* forward declarations */
605interface IEnumConnections;
606
607[
608    object,
609    uuid(b196b286-bab4-101a-b69c-00aa00341d07),
610    pointer_default(unique)
611]
612interface IConnectionPoint : IUnknown
613{
614    typedef IConnectionPoint *PCONNECTIONPOINT, *LPCONNECTIONPOINT;
615
616    HRESULT GetConnectionInterface( [out] IID *pIID );
617    HRESULT GetConnectionPointContainer( [out] IConnectionPointContainer **ppCPC );
618    HRESULT Advise( [in] IUnknown *pUnkSink, [out] DWORD *pdwCookie );
619    HRESULT Unadvise( [in] DWORD dwCookie );
620    HRESULT EnumConnections( [out] IEnumConnections **ppEnum );
621}
622
623
624/*****************************************************************************
625 * IConnectionPointContainer interface
626 */
627interface IEnumConnectionPoints; /* forward declaration */
628[
629    object,
630    uuid(b196b284-bab4-101a-b69c-00aa00341d07),
631    pointer_default(unique)
632]
633interface IConnectionPointContainer : IUnknown
634{
635    typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER, *LPCONNECTIONPOINTCONTAINER;
636
637    HRESULT EnumConnectionPoints( [out] IEnumConnectionPoints **ppEnum );
638    HRESULT FindConnectionPoint( [in] REFIID riid, [out] IConnectionPoint **ppCP );
639}
640
641
642/*****************************************************************************
643 * IEnumConnections interface
644 */
645[
646    object,
647    uuid(b196b287-bab4-101a-b69c-00aa00341d07),
648    pointer_default(unique)
649]
650interface IEnumConnections : IUnknown
651{
652    typedef IEnumConnections *PENUMCONNECTIONS, *LPENUMCONNECTIONS;
653
654    typedef struct tagCONNECTDATA
655    {
656        IUnknown *pUnk;
657        DWORD dwCookie;
658    } CONNECTDATA, *PCONNECTDATA, *LPCONNECTDATA;
659
660    [local]
661    HRESULT Next(
662        [in] ULONG cConnections,
663        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd,
664        [out] ULONG *pcFetched);
665
666    [call_as(Next)]
667    HRESULT RemoteNext(
668        [in] ULONG cConnections,
669        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd,
670        [out] ULONG *pcFetched);
671
672    HRESULT Skip( [in] ULONG cConnections );
673
674    HRESULT Reset();
675
676    HRESULT Clone( [out] IEnumConnections **ppEnum );
677}
678
679
680/*****************************************************************************
681 * IEnumConnectionPoints interface
682 */
683[
684    object,
685    uuid(b196b285-bab4-101a-b69c-00aa00341d07),
686    pointer_default(unique)
687]
688interface IEnumConnectionPoints : IUnknown
689{
690    typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS, *LPENUMCONNECTIONPOINTS;
691
692    [local]
693    HRESULT Next(
694        [in] ULONG cConnections,
695        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP,
696        [out] ULONG *pcFetched);
697
698    [call_as(Next)]
699    HRESULT RemoteNext(
700        [in] ULONG cConnections,
701        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP,
702        [out] ULONG *pcFetched);
703
704    HRESULT Skip( [in] ULONG cConnections );
705
706    HRESULT Reset();
707
708    HRESULT Clone( [out] IEnumConnectionPoints **ppEnum );
709}
710
711
712/*****************************************************************************
713 * IPropertyPage interface
714 */
715interface IPropertyPageSite;  /* forward declaration */
716[
717    object,
718    uuid(b196b28d-bab4-101a-b69c-00aa00341d07),
719    pointer_default(unique)
720]
721interface IPropertyPage : IUnknown
722{
723    typedef IPropertyPage *LPPROPERTYPAGE;
724
725    typedef struct tagPROPPAGEINFO
726    {
727        ULONG cb;
728        LPOLESTR pszTitle;
729        SIZE size;
730        LPOLESTR pszDocString;
731        LPOLESTR pszHelpFile;
732        DWORD dwHelpContext;
733    } PROPPAGEINFO, *LPPROPPAGEINFO;
734
735    HRESULT SetPageSite( [in] IPropertyPageSite *pPageSite );
736
737    HRESULT Activate(
738        [in] HWND hWndParent,
739        [in] LPCRECT pRect,
740        [in] BOOL bModal);
741
742    HRESULT Deactivate();
743
744    HRESULT GetPageInfo( [out] PROPPAGEINFO *pPageInfo );
745
746    HRESULT SetObjects(
747        [in] ULONG cObjects,
748        [in, size_is(cObjects)] IUnknown **ppUnk);
749
750    HRESULT Show( [in] UINT nCmdShow );
751
752    HRESULT Move( [in] LPCRECT pRect );
753
754    HRESULT IsPageDirty();
755
756    HRESULT Apply();
757
758    HRESULT Help( [in] LPCOLESTR pszHelpDir );
759
760    HRESULT TranslateAccelerator( [in] MSG *pMsg );
761}
762
763
764/*****************************************************************************
765 * IPropertyPage2 interface
766 */
767[
768    object,
769    uuid(01e44665-24ac-101b-84ed-08002b2ec713),
770    pointer_default(unique)
771]
772interface IPropertyPage2 : IPropertyPage
773{
774    typedef IPropertyPage2 *LPPROPERTYPAGE2;
775
776    HRESULT EditProperty( [in] DISPID dispID );
777}
778
779
780/*****************************************************************************
781 * IPropertyPageSite interface
782 */
783[
784    object,
785    uuid(b196b28c-bab4-101a-b69c-00aa00341d07),
786    pointer_default(unique)
787]
788interface IPropertyPageSite : IUnknown
789{
790    typedef IPropertyPageSite *LPPROPERTYPAGESITE;
791
792    typedef enum tagPROPPAGESTATUS
793    {
794        PROPPAGESTATUS_DIRTY = 0x1,
795        PROPPAGESTATUS_VALIDATE = 0x2,
796        PROPPAGESTATUS_CLEAN = 0x4
797    } PROPPAGESTATUS;
798
799    HRESULT OnStatusChange( [in] DWORD dwFlags );
800    HRESULT GetLocaleID( [out] LCID *pLocaleID );
801    HRESULT GetPageContainer( [out] IUnknown **ppUnk );
802    HRESULT TranslateAccelerator( [in] MSG *pMsg );
803}
804
805
806/*****************************************************************************
807 * IPropertyNotifySink interface
808 */
809[
810    object,
811    uuid(9bfbbc02-eff1-101a-84ed-00aa00341d07),
812    pointer_default(unique)
813]
814interface IPropertyNotifySink : IUnknown
815{
816    typedef IPropertyNotifySink *LPPROPERTYNOTIFYSINK;
817
818    HRESULT OnChanged( [in] DISPID dispID );
819    HRESULT OnRequestEdit( [in] DISPID dispID );
820}
821
822
823/*****************************************************************************
824 * ISimpleFrameSite interface
825 */
826[
827    object,
828    uuid(742b0e01-14e6-101b-914e-00aa00300cab),
829    pointer_default(unique)
830]
831interface ISimpleFrameSite : IUnknown
832{
833    typedef ISimpleFrameSite *LPSIMPLEFRAMESITE;
834
835    HRESULT PreMessageFilter(
836        [in] HWND hWnd,
837        [in] UINT msg,
838        [in] WPARAM wp,
839        [in] LPARAM lp,
840        [out] LRESULT *plResult,
841        [out] DWORD *pdwCookie);
842
843    HRESULT PostMessageFilter(
844        [in] HWND hWnd,
845        [in] UINT msg,
846        [in] WPARAM wp,
847        [in] LPARAM lp,
848        [out] LRESULT *plResult,
849        [in] DWORD dwCookie);
850}
851
852
853/*****************************************************************************
854 * IPersistStreamInit interface
855 */
856[
857    object,
858    uuid(7fd52380-4e07-101b-ae2d-08002b2ec713),
859    pointer_default(unique)
860]
861interface IPersistStreamInit : IPersist
862{
863    typedef IPersistStreamInit *LPPERSISTSTREAMINIT;
864
865    HRESULT IsDirty();
866    HRESULT Load( [in] LPSTREAM pStm );
867    HRESULT Save( [in] LPSTREAM pStm, [in] BOOL fClearDirty );
868    HRESULT GetSizeMax( [out] ULARGE_INTEGER *pcbSize );
869    HRESULT InitNew();
870}
871
872
873/*****************************************************************************
874 * IPersistMemory interface
875 */
876[
877    object,
878    uuid(bd1ae5e0-a6ae-11ce-bd37-504200c10000),
879    pointer_default(unique)
880]
881interface IPersistMemory : IPersist
882{
883    typedef IPersistMemory *LPPERSISTMEMORY;
884
885    HRESULT IsDirty();
886
887    [local]
888    HRESULT Load(
889        [in, size_is(cbSize)] LPVOID pMem,
890        [in] ULONG cbSize);
891
892    [call_as(Load)]
893    HRESULT RemoteLoad(
894        [in, size_is(cbSize)] BYTE *pMem,
895        [in] ULONG cbSize);
896
897    [local]
898    HRESULT Save(
899        [out, size_is(cbSize)] LPVOID pMem,
900        [in] BOOL fClearDirty,
901        [in] ULONG cbSize);
902
903    [call_as(Save)]
904    HRESULT RemoteSave(
905        [out, size_is(cbSize)] BYTE *pMem,
906        [in] BOOL fClearDirty,
907        [in] ULONG cbSize);
908
909    HRESULT GetSizeMax( [out] ULONG *pCbSize );
910    HRESULT InitNew();
911}
912
913
914/*****************************************************************************
915 * IPersistPropertyBag interface
916 */
917[
918    object,
919    uuid(37d84f60-42cb-11ce-8135-00aa004bb851),
920    pointer_default(unique)
921]
922interface IPersistPropertyBag : IPersist
923{
924    typedef IPersistPropertyBag *LPPERSISTPROPERTYBAG;
925
926    HRESULT InitNew();
927
928    HRESULT Load(
929        [in] IPropertyBag *pPropBag,
930        [in] IErrorLog *pErrorLog);
931
932    HRESULT Save(
933        [in] IPropertyBag *pPropBag,
934        [in] BOOL fClearDirty,
935        [in] BOOL fSaveAllProperties);
936}
937
938
939/*****************************************************************************
940 * IPropertyBag2 interface
941 */
942[
943    object,
944    uuid(22f55882-280b-11d0-a8a9-00a0c90c2004),
945    pointer_default(unique)
946]
947interface IPropertyBag2 : IUnknown
948{
949    typedef IPropertyBag2 *LPPROPERTYBAG2;
950
951    typedef enum tagPROPBAG2_TYPE
952    {
953        PROPBAG2_TYPE_UNDEFINED = 0,
954        PROPBAG2_TYPE_DATA = 1,
955        PROPBAG2_TYPE_URL = 2,
956        PROPBAG2_TYPE_OBJECT = 3,
957        PROPBAG2_TYPE_STREAM = 4,
958        PROPBAG2_TYPE_STORAGE = 5,
959        PROPBAG2_TYPE_MONIKER = 6
960    } PROPBAG2_TYPE;
961
962    typedef struct tagPROPBAG2
963    {
964        DWORD dwType;
965        VARTYPE vt;
966        CLIPFORMAT cfType;
967        DWORD dwHint;
968        LPOLESTR pstrName;
969        CLSID clsid;
970    } PROPBAG2;
971
972    HRESULT Read(
973        [in] ULONG cProperties,
974        [in] PROPBAG2 *pPropBag,
975        [in] IErrorLog *pErrLog,
976        [out] VARIANT *pvarValue,
977        [out] HRESULT *phrError);
978
979    HRESULT Write(
980        [in] ULONG cProperties,
981        [in] PROPBAG2 *pPropBag,
982        [in] VARIANT *pvarValue);
983
984    HRESULT CountProperties(
985        [out] ULONG *pcProperties );
986
987    HRESULT GetPropertyInfo(
988        [in] ULONG iProperty,
989        [in] ULONG cProperties,
990        [out] PROPBAG2 *pPropBag,
991        [out] ULONG *pcProperties);
992
993    HRESULT LoadObject(
994        [in] LPCOLESTR pstrName,
995        [in] DWORD dwHint,
996        [in] IUnknown *pUnkObject,
997        [in] IErrorLog *pErrLog);
998}
999
1000
1001/*****************************************************************************
1002 * IPersistPropertyBag2 interface
1003 */
1004[
1005    object,
1006    uuid(22f55881-280b-11d0-a8a9-00a0c90c2004),
1007    pointer_default(unique)
1008]
1009interface IPersistPropertyBag2 : IPersist
1010{
1011    typedef IPersistPropertyBag2 *LPPERSISTPROPERTYBAG2;
1012
1013    HRESULT InitNew();
1014
1015    HRESULT Load(
1016        [in] IPropertyBag2 *pPropBag,
1017        [in] IErrorLog *pErrorLog);
1018
1019    HRESULT Save(
1020        [in] IPropertyBag2 *pPropBag,
1021        [in] BOOL fClearDirty,
1022        [in] BOOL fSaveAllProperties);
1023
1024    HRESULT IsDirty();
1025}
1026
1027
1028/*****************************************************************************
1029 * ISpecifyPropertyPages interface
1030 */
1031[
1032    object,
1033    uuid(b196b28b-bab4-101a-b69c-00aa00341d07),
1034    pointer_default(unique)
1035]
1036interface ISpecifyPropertyPages : IUnknown
1037{
1038    typedef ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES;
1039
1040    typedef struct tagCAUUID
1041    {
1042	ULONG cElems;
1043        [size_is(cElems)] GUID *pElems;
1044    } CAUUID, *LPCAUUID;
1045
1046    HRESULT GetPages( [out] CAUUID *pPages );
1047}
1048
1049
1050/*****************************************************************************
1051 * IPerPropertyBrowsing interface
1052 */
1053[
1054    object,
1055    uuid(376bd3aa-3845-101b-84ed-08002b2ec713),
1056    pointer_default(unique)
1057]
1058interface IPerPropertyBrowsing : IUnknown
1059{
1060    typedef IPerPropertyBrowsing *LPPERPROPERTYBROWSING;
1061
1062    typedef struct tagCALPOLESTR
1063    {
1064        ULONG cElems;
1065        [size_is(cElems)] LPOLESTR *pElems;
1066    } CALPOLESTR, *LPCALPOLESTR;
1067
1068    typedef struct tagCADWORD
1069    {
1070        ULONG cElems;
1071        [size_is(cElems)] DWORD *pElems;
1072    } CADWORD, *LPCADWORD;
1073
1074    HRESULT GetDisplayString(
1075        [in] DISPID dispID,
1076        [out] BSTR *pBstr);
1077
1078    HRESULT MapPropertyToPage(
1079        [in] DISPID dispID,
1080        [out] CLSID *pClsid);
1081
1082    HRESULT GetPredefinedStrings(
1083        [in] DISPID dispID,
1084        [out] CALPOLESTR *pCaStringsOut,
1085        [out] CADWORD *pCaCookiesOut);
1086
1087    HRESULT GetPredefinedValue(
1088        [in] DISPID dispID,
1089        [in] DWORD dwCookie,
1090        [out] VARIANT *pVarOut);
1091}
1092
1093
1094/*****************************************************************************
1095 * IAdviseSinkEx interface
1096 */
1097[
1098    object,
1099    uuid(3af24290-0c96-11ce-a0cf-00aa00600ab8),
1100    pointer_default(unique)
1101]
1102interface IAdviseSinkEx : IAdviseSink
1103{
1104    typedef IAdviseSinkEx *LPADVISESINKEX;
1105
1106    [local]
1107    void OnViewStatusChange( [in] DWORD dwViewStatus );
1108
1109    [call_as(OnViewStatusChange)]
1110    HRESULT RemoteOnViewStatusChange( [in] DWORD dwViewStatus );
1111}
1112
1113
1114/*****************************************************************************
1115 * IPointerInactive interface
1116 */
1117[
1118    object,
1119    uuid(55980ba0-35aa-11cf-b671-00aa004cd6d8),
1120    pointer_default(unique)
1121]
1122interface IPointerInactive : IUnknown
1123{
1124    typedef IPointerInactive *LPPOINTERINACTIVE;
1125
1126    HRESULT GetActivationPolicy(
1127        [out] DWORD *pdwPolicy);
1128
1129    HRESULT OnInactiveMouseMove(
1130        [in] LPCRECT pRectBounds,
1131        [in] LONG x,
1132        [in] LONG y,
1133        [in] DWORD grfKeyState);
1134
1135    HRESULT OnInactiveSetCursor(
1136        [in] LPCRECT pRectBounds,
1137        [in] LONG x,
1138        [in] LONG y,
1139        [in] DWORD dwMouseMsg,
1140        [in] BOOL fSetAlways);
1141}
1142
1143
1144/*****************************************************************************
1145 * IObjectWithSite interface
1146 */
1147[
1148    object,
1149    uuid(fc4801a3-2ba9-11cf-a229-00aa003d7352),
1150    pointer_default(unique)
1151]
1152interface IObjectWithSite : IUnknown
1153{
1154    typedef IObjectWithSite *LPOBJECTWITHSITE;
1155
1156    HRESULT SetSite(
1157        [in] IUnknown * pUnkSite);
1158
1159    HRESULT GetSite(
1160        [in] REFIID riid,
1161        [out, iid_is(riid)] PVOID *ppvSite);
1162}
1163
1164
1165/*****************************************************************************
1166 * IOleUndoUnit interface
1167 */
1168interface IOleUndoManager;  /* forward declaration */
1169[
1170    object,
1171    uuid(894ad3b0-ef97-11ce-9bc9-00aa00608e01),
1172    pointer_default(unique)
1173]
1174interface IOleUndoUnit : IUnknown
1175{
1176    typedef IOleUndoUnit *LPOLEUNDOUNIT;
1177
1178    HRESULT Do( [in] IOleUndoManager *pUndoManager );
1179    HRESULT GetDescription( [out] BSTR *pBstr );
1180    HRESULT GetUnitType( [out] CLSID *pClsid, [out] LONG *plID );
1181    HRESULT OnNextAdd();
1182}
1183
1184
1185/*****************************************************************************
1186 * IOleParentUndoUnit interface
1187 */
1188[
1189    object,
1190    uuid(a1faf330-ef97-11ce-9bc9-00aa00608e01),
1191    pointer_default(unique)
1192]
1193interface IOleParentUndoUnit : IOleUndoUnit
1194{
1195    typedef IOleParentUndoUnit *LPOLEPARENTUNDOUNIT;
1196
1197    HRESULT Open( [in] IOleParentUndoUnit *pPUU );
1198    HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit );
1199    HRESULT Add( [in] IOleUndoUnit *pUU );
1200    HRESULT FindUnit( [in] IOleUndoUnit *pUU );
1201    HRESULT GetParentState( [out] DWORD *pdwState );
1202}
1203
1204
1205/*****************************************************************************
1206 * IEnumOleUndoUnits interface
1207 */
1208[
1209    object,
1210    uuid(b3e7c340-ef97-11ce-9bc9-00aa00608e01),
1211    pointer_default(unique)
1212]
1213interface IEnumOleUndoUnits : IUnknown
1214{
1215    typedef IEnumOleUndoUnits *LPENUMOLEUNDOUNITS;
1216
1217    [local]
1218    HRESULT Next(
1219        [in] ULONG cElt,
1220        [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt,
1221        [out] ULONG *pcEltFetched);
1222
1223    [call_as(Next)]
1224    HRESULT RemoteNext(
1225        [in] ULONG cElt,
1226        [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt,
1227        [out] ULONG *pcEltFetched);
1228
1229    HRESULT Skip( [in] ULONG cElt );
1230
1231    HRESULT Reset();
1232
1233    HRESULT Clone( [out] IEnumOleUndoUnits **ppEnum );
1234}
1235
1236
1237/*****************************************************************************
1238 * IOleUndoManager interface
1239 */
1240[
1241    object,
1242    uuid(d001f200-ef97-11ce-9bc9-00aa00608e01),
1243    pointer_default(unique)
1244]
1245interface IOleUndoManager : IUnknown
1246{
1247cpp_quote("#define SID_SOleUndoManager IID_IOleUndoManager")
1248    typedef IOleUndoManager *LPOLEUNDOMANAGER;
1249
1250    HRESULT Open( [in] IOleParentUndoUnit *pPUU );
1251    HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit );
1252    HRESULT Add( [in] IOleUndoUnit *pUU );
1253    HRESULT GetOpenParentState( [out] DWORD *pdwState );
1254    HRESULT DiscardFrom( [in] IOleUndoUnit *pUU );
1255    HRESULT UndoTo( [in] IOleUndoUnit *pUU );
1256    HRESULT RedoTo( [in] IOleUndoUnit *pUU );
1257    HRESULT EnumUndoable( [out] IEnumOleUndoUnits **ppEnum );
1258    HRESULT EnumRedoable( [out] IEnumOleUndoUnits **ppEnum );
1259    HRESULT GetLastUndoDescription( [out] BSTR *pBstr );
1260    HRESULT GetLastRedoDescription( [out] BSTR *pBstr );
1261    HRESULT Enable( [in] BOOL fEnable );
1262}
1263
1264
1265/*****************************************************************************
1266 * IQuickActivate interface
1267 */
1268[
1269    object,
1270    uuid(cf51ed10-62fe-11cf-bf86-00a0c9034836),
1271    pointer_default(unique)
1272]
1273interface IQuickActivate : IUnknown
1274{
1275    typedef IQuickActivate *LPQUICKACTIVATE;
1276
1277    typedef enum tagQACONTAINERFLAGS
1278    {
1279        QACONTAINER_SHOWHATCHING = 0x1,
1280        QACONTAINER_SHOWGRABHANDLES = 0x2,
1281        QACONTAINER_USERMODE = 0x4,
1282        QACONTAINER_DISPLAYASDEFAULT = 0x8,
1283        QACONTAINER_UIDEAD = 0x10,
1284        QACONTAINER_AUTOCLIP = 0x20,
1285        QACONTAINER_MESSAGEREFLECT = 0x40,
1286        QACONTAINER_SUPPORTSMNEMONICS = 0x80
1287    } QACONTAINERFLAGS;
1288
1289    typedef DWORD OLE_COLOR;
1290
1291    typedef struct tagQACONTAINER
1292    {
1293        ULONG cbSize;
1294        IOleClientSite *pClientSite;
1295        IAdviseSinkEx *pAdviseSink;
1296        IPropertyNotifySink *pPropertyNotifySink;
1297        IUnknown *pUnkEventSink;
1298        DWORD dwAmbientFlags;
1299        OLE_COLOR colorFore;
1300        OLE_COLOR colorBack;
1301        IFont *pFont;
1302        IOleUndoManager *pUndoMgr;
1303        DWORD dwAppearance;
1304        LONG lcid;
1305        HPALETTE hpal;
1306        IBindHost *pBindHost;
1307        IOleControlSite *pOleControlSite;
1308        IServiceProvider *pServiceProvider;
1309    } QACONTAINER;
1310
1311    typedef struct tagQACONTROL
1312    {
1313        ULONG cbSize;
1314        DWORD dwMiscStatus;
1315        DWORD dwViewStatus;
1316        DWORD dwEventCookie;
1317        DWORD dwPropNotifyCookie;
1318        DWORD dwPointerActivationPolicy;
1319    } QACONTROL;
1320
1321    [local]
1322    HRESULT QuickActivate(
1323        [in] QACONTAINER *pQaContainer,
1324        [in,out] QACONTROL *pQaControl);
1325
1326    [call_as(QuickActivate)]
1327    HRESULT RemoteQuickActivate(
1328        [in] QACONTAINER *pQaContainer,
1329        [out] QACONTROL *pQaControl);
1330
1331    HRESULT SetContentExtent( [in] LPSIZEL pSizel );
1332
1333    HRESULT GetContentExtent( [out] LPSIZEL pSizel );
1334}
1335