[PSDK]
[reactos.git] / include / psdk / ocidl.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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21 #ifndef DO_NO_IMPORTS
22 import "oleidl.idl";
23 import "oaidl.idl";
24 import "servprov.idl";
25 import "urlmon.idl";
26 #endif
27
28 /*****************************************************************************
29 * IOleControlTypes interface
30 */
31 [
32 pointer_default(unique)
33 ]
34 interface 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 ]
75 interface 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 ]
115 interface 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 ]
129 interface 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 ]
143 interface 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 ]
209 interface 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
224 interface 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 ]
257 interface 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 ]
303 interface 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 ]
327 interface 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 ]
388 interface 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 ]
410 interface 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 ]
452 interface 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 ]
536 interface IProvideClassInfo : IUnknown
537 {
538 typedef IProvideClassInfo *LPPROVIDECLASSINFO;
539
540 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
541 cpp_quote("#undef GetClassInfo")
542 cpp_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 ]
556 interface 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 ]
576 interface 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 */
604 interface IConnectionPointContainer; /* forward declarations */
605 interface IEnumConnections;
606
607 [
608 object,
609 uuid(b196b286-bab4-101a-b69c-00aa00341d07),
610 pointer_default(unique)
611 ]
612 interface 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 */
627 interface IEnumConnectionPoints; /* forward declaration */
628 [
629 object,
630 uuid(b196b284-bab4-101a-b69c-00aa00341d07),
631 pointer_default(unique)
632 ]
633 interface 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 ]
650 interface 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 ]
688 interface 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 */
715 interface IPropertyPageSite; /* forward declaration */
716 [
717 object,
718 uuid(b196b28d-bab4-101a-b69c-00aa00341d07),
719 pointer_default(unique)
720 ]
721 interface 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 ]
772 interface 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 ]
788 interface 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 ]
814 interface 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 ]
831 interface 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 ]
861 interface 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 ]
881 interface 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 ]
922 interface 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 ]
947 interface 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 ]
1009 interface 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 ]
1036 interface 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 ]
1058 interface 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 ]
1102 interface 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 ]
1122 interface 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 ]
1152 interface 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 */
1168 interface IOleUndoManager; /* forward declaration */
1169 [
1170 object,
1171 uuid(894ad3b0-ef97-11ce-9bc9-00aa00608e01),
1172 pointer_default(unique)
1173 ]
1174 interface 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 ]
1193 interface 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 ]
1213 interface 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 ]
1245 interface IOleUndoManager : IUnknown
1246 {
1247 cpp_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 ]
1273 interface 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 }