Converted ocidl.h to IDL.

diff --git a/include/ocidl.idl b/include/ocidl.idl
new file mode 100644
index 0000000..8cadfa7
--- /dev/null
+++ b/include/ocidl.idl
@@ -0,0 +1,1259 @@
+/*
+ * Copyright (C) 1999 Paul Quinn
+ * Copyright (C) 1999 Francis Beaudet
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+import "oleidl.idl";
+import "oaidl.idl";
+import "servprov.idl";
+import "urlmon.idl";
+
+
+/*****************************************************************************
+ * IOleControlTypes interface
+ */
+[
+    pointer_default(unique)
+]
+interface IOleControlTypes
+{
+    typedef enum tagREADYSTATE
+    {
+        READYSTATE_UNINITIALIZED  = 0,
+        READYSTATE_LOADING  = 1,
+        READYSTATE_LOADED = 2,
+        READYSTATE_INTERACTIVE  = 3,
+        READYSTATE_COMPLETE = 4
+    } READYSTATE;
+
+    typedef struct tagVARIANT_BLOB
+    {
+        DWORD clSize;
+        DWORD rpcReserved;
+        [size_is(clSize-1)] ULONGLONG ahData[];
+    } wireVARIANT_BLOB;
+
+    typedef struct tagUserVARIANT
+    {
+      wireVARIANT_BLOB pVarBlob;
+    } UserVARIANT;
+}
+
+
+/*****************************************************************************
+ * IFont interface
+ */
+[
+    object,
+    uuid(bef6e002-a874-101a-8bba-00aa00300cab),
+    pointer_default(unique)
+]
+interface IFont : IUnknown
+{
+    typedef IFont *LPFONT;
+    typedef TEXTMETRICW TEXTMETRICOLE, *LPTEXTMETRICOLE;
+
+    HRESULT get_Name( [out] BSTR *pname);
+    HRESULT put_Name( [in] BSTR name );
+    HRESULT get_Size( [out] CY *psize );
+    HRESULT put_Size( [in] CY size );
+    HRESULT get_Bold( [out] BOOL *pbold );
+    HRESULT put_Bold( [in] BOOL bold );
+    HRESULT get_Italic( [out] BOOL *pitalic );
+    HRESULT put_Italic( [in] BOOL italic );
+    HRESULT get_Underline( [out] BOOL *punderline );
+    HRESULT put_Underline( [in] BOOL underline );
+    HRESULT get_Strikethrough( [out] BOOL *pstrikethrough );
+    HRESULT put_Strikethrough( [in] BOOL strikethrough );
+    HRESULT get_Weight( [out] SHORT *pweight );
+    HRESULT put_Weight( [in] SHORT weight );
+    HRESULT get_Charset( [out] SHORT *pcharset );
+    HRESULT put_Charset( [in] SHORT charset );
+    HRESULT get_hFont( [out] HFONT *phfont );
+    HRESULT Clone( [out] IFont **ppfont );
+    HRESULT IsEqual( [in] IFont *pFontOther );
+    HRESULT SetRatio( [in] LONG cyLogical, [in] LONG cyHimetric );
+    HRESULT QueryTextMetrics( [out] TEXTMETRICOLE * ptm );
+    HRESULT AddRefHfont( [in] HFONT hfont );
+    HRESULT ReleaseHfont( [in] HFONT hfont );
+    HRESULT SetHdc( [in] HDC hdc );
+}
+
+
+/*****************************************************************************
+ * IFontDisp interface
+ */
+[
+    object,
+    uuid(bef6e003-a874-101a-8bba-00aa00300cab),
+    pointer_default(unique)
+]
+interface IFontDisp : IDispatch
+{
+    typedef IFontDisp *LPFONTDISP;
+}
+
+
+/*****************************************************************************
+ * IPicture interface
+ */
+[
+    object,
+    uuid(7bf80980-bf32-101a-8bbb-00aa00300cab),
+    pointer_default(unique)
+]
+interface IPicture : IUnknown
+{
+    typedef IPicture *LPPICTURE;
+
+    typedef enum tagPicture
+    {
+        PICTURE_SCALABLE = 0x1,
+        PICTURE_TRANSPARENT = 0x2
+    } PICTUREATTRIBUTES;
+
+    typedef UINT OLE_HANDLE;
+    typedef LONG OLE_XPOS_HIMETRIC;
+    typedef LONG OLE_YPOS_HIMETRIC;
+    typedef LONG OLE_XSIZE_HIMETRIC;
+    typedef LONG OLE_YSIZE_HIMETRIC;
+
+    HRESULT get_Handle( [out] OLE_HANDLE *pHandle );
+    HRESULT get_hPal( [out] OLE_HANDLE *phPal );
+    HRESULT get_Type( [out] SHORT *pType );
+    HRESULT get_Width( [out] OLE_XSIZE_HIMETRIC *pWidth );
+    HRESULT get_Height( [out] OLE_YSIZE_HIMETRIC *pHeight );
+
+    HRESULT Render(
+        [in] HDC hdc,
+        [in] LONG x,
+        [in] LONG y,
+        [in] LONG cx,
+        [in] LONG cy,
+        [in] OLE_XPOS_HIMETRIC xSrc,
+        [in] OLE_YPOS_HIMETRIC ySrc,
+        [in] OLE_XSIZE_HIMETRIC cxSrc,
+        [in] OLE_YSIZE_HIMETRIC cySrc,
+        [in] LPCRECT pRcWBounds);
+
+    HRESULT set_hPal( [in] OLE_HANDLE hPal );
+
+    HRESULT get_CurDC( [out] HDC *phDC );
+
+    HRESULT SelectPicture(
+        [in] HDC hDCIn,
+        [out] HDC * phDCOut,
+        [out] OLE_HANDLE * phBmpOut);
+
+    HRESULT get_KeepOriginalFormat( [out] BOOL *pKeep );
+
+    HRESULT put_KeepOriginalFormat( [in] BOOL keep );
+
+    HRESULT PictureChanged();
+
+    HRESULT SaveAsFile(
+        [in] LPSTREAM pStream,
+        [in] BOOL fSaveMemCopy,
+        [out] LONG *pCbSize);
+
+    HRESULT get_Attributes( [out] DWORD *pDwAttr );
+}
+
+
+/*****************************************************************************
+ * IPictureDisp interface
+ */
+[
+    object,
+    uuid(7bf80981-bf32-101a-8bbb-00aa00300cab),
+    pointer_default(unique)
+]
+interface IPictureDisp : IDispatch
+{
+    typedef IPictureDisp *LPPICTUREDISP;
+}
+
+
+/*****************************************************************************
+ * IOleControl interface
+ */
+[
+    object,
+    uuid(b196b288-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+
+interface IOleControl : IUnknown
+{
+    typedef IOleControl *LPOLECONTROL;
+
+    typedef struct tagCONTROLINFO
+    {
+        ULONG cb;
+        HACCEL hAccel;
+        USHORT cAccel;
+        DWORD dwFlags;
+    } CONTROLINFO, *LPCONTROLINFO;
+
+    typedef enum tagCTRLINFO
+    {
+        CTRLINFO_EATS_RETURN = 1,
+        CTRLINFO_EATS_ESCAPE = 2
+    } CTRLINFO;
+
+    HRESULT GetControlInfo( [out] CONTROLINFO *pCI );
+    HRESULT OnMnemonic( [in] MSG *pMsg );
+    HRESULT OnAmbientPropertyChange( [in] DISPID dispID );
+    HRESULT FreezeEvents( [in] BOOL bFreeze );
+}
+
+
+/*****************************************************************************
+ * IOleControlSite interface
+ */
+[
+    object,
+    uuid(b196b289-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IOleControlSite : IUnknown
+{
+    typedef IOleControlSite *LPOLECONTROLSITE;
+
+    typedef struct tagPOINTF
+    {
+        FLOAT x;
+        FLOAT y;
+    } POINTF, *LPPOINTF;
+
+    typedef enum tagXFORMCOORDS
+    {
+	XFORMCOORDS_POSITION = 0x1,
+	XFORMCOORDS_SIZE = 0x2,
+	XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
+	XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8,
+        XFORMCOORDS_EVENTCOMPAT = 0x10
+    } XFORMCOORDS;
+
+    HRESULT OnControlInfoChanged();
+
+    HRESULT LockInPlaceActive( [in] BOOL fLock );
+
+    HRESULT GetExtendedControl( [out] IDispatch ** ppDisp );
+
+    HRESULT TransformCoords(
+        [in, out] POINTL *pPtlHimetric,
+        [in, out] POINTF *pPtfContainer,
+        [in] DWORD dwFlags);
+
+    HRESULT TranslateAccelerator( [in] MSG *pMsg, [in] DWORD grfModifiers );
+
+    HRESULT OnFocus( [in] BOOL fGotFocus );
+
+    HRESULT ShowPropertyFrame();
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceSiteEx interface
+ */
+[
+    object,
+    uuid(9c2cad80-3424-11cf-b670-00aa004cd6d8),
+    pointer_default(unique)
+]
+interface IOleInPlaceSiteEx : IOleInPlaceSite
+{
+    typedef IOleInPlaceSiteEx *LPOLEINPLACESITEEX;
+
+    typedef enum tagACTIVATEFLAGS
+    {
+        ACTIVATE_WINDOWLESS = 1
+    } ACTIVATE_FLAGS;
+
+    HRESULT OnInPlaceActivateEx( [out] BOOL * pfNoRedraw, [in] DWORD dwFlags );
+    HRESULT OnInPlaceDeactivateEx( [in] BOOL fNoRedraw );
+    HRESULT RequestUIActivate();
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceSiteWindowless interface
+ */
+[
+    local,
+    object,
+    uuid(922eada0-3424-11cf-b670-00aa004cd6d8),
+    pointer_default(unique)
+]
+interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx
+{
+    typedef IOleInPlaceSiteWindowless *LPOLEINPLACESITEWINDOWLESS;
+
+    typedef enum tagOLEDCFLAGS
+    {
+        OLEDC_NODRAW = 0x1,
+        OLEDC_PAINTBKGND = 0x2,
+        OLEDC_OFFSCREEN = 0x4
+    } OLEDCFLAGS;
+
+    HRESULT CanWindowlessActivate();
+
+    HRESULT GetCapture();
+
+    HRESULT SetCapture( [in] BOOL fCapture );
+
+    HRESULT GetFocus();
+
+    HRESULT SetFocus( [in] BOOL fFocus );
+
+    HRESULT GetDC(
+        [in] LPCRECT pRect,
+        [in] DWORD grfFlags,
+        [out] HDC *phDC);
+
+    HRESULT ReleaseDC( [in] HDC hDC );
+
+    HRESULT InvalidateRect(
+        [in] LPCRECT pRect,
+        [in] BOOL fErase);
+
+    HRESULT InvalidateRgn(
+        [in] HRGN hRGN,
+        [in] BOOL fErase);
+
+    HRESULT ScrollRect(
+        [in] INT dx,
+        [in] INT dy,
+        [in] LPCRECT pRectScroll,
+        [in] LPCRECT pRectClip);
+
+    HRESULT AdjustRect( [in, out] LPRECT prc );
+
+    HRESULT OnDefWindowMessage(
+        [in] UINT msg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam,
+        [out] LRESULT *plResult);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceObjectWindowless interface
+ */
+[
+    local,
+    object,
+    uuid(1c2056cc-5ef4-101b-8bc8-00aa003e3b29),
+    pointer_default(unique)
+]
+interface IOleInPlaceObjectWindowless : IOleInPlaceObject
+{
+    typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS;
+
+    HRESULT OnWindowMessage(
+        [in] UINT msg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam,
+        [out] LRESULT *plResult);
+
+    HRESULT GetDropTarget( [out] IDropTarget **ppDropTarget );
+}
+
+
+/*****************************************************************************
+ * IClassFactory2 interface
+ */
+[
+    object,
+    uuid(b196b28f-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IClassFactory2 : IClassFactory
+{
+    typedef IClassFactory2 *LPCLASSFACTORY2;
+
+    typedef struct tagLICINFO
+    {
+        LONG cbLicInfo;
+        BOOL fRuntimeKeyAvail;
+        BOOL fLicVerified;
+    } LICINFO, *LPLICINFO;
+
+    HRESULT GetLicInfo( [out] LICINFO *pLicInfo );
+
+    HRESULT RequestLicKey(
+        [in] DWORD dwReserved,
+        [out] BSTR *pBstrKey);
+
+    [local]
+    HRESULT CreateInstanceLic(
+        [in] IUnknown *pUnkOuter,
+        [in] IUnknown *pUnkReserved,
+        [in] REFIID riid,
+        [in] BSTR bstrKey,
+        [out, iid_is(riid)] PVOID *ppvObj);
+
+    [call_as(CreateInstanceLic)]
+    HRESULT RemoteCreateInstanceLic(
+        [in] REFIID riid,
+        [in] BSTR bstrKey,
+        [out, iid_is(riid)] IUnknown **ppvObj);
+}
+
+
+/*****************************************************************************
+ * IViewObject interface
+ */
+[
+    local,
+    object,
+    uuid(3af24292-0c96-11ce-a0cf-00aa00600ab8),
+    pointer_default(unique)
+]
+interface IViewObjectEx : IViewObject2
+{
+    typedef IViewObjectEx *LPVIEWOBJECTEX;
+
+    typedef enum tagVIEWSTATUS
+    {
+        VIEWSTATUS_OPAQUE = 1,
+        VIEWSTATUS_SOLIDBKGND = 2,
+        VIEWSTATUS_DVASPECTOPAQUE = 4,
+        VIEWSTATUS_DVASPECTTRANSPARENT = 8,
+        VIEWSTATUS_SURFACE = 16,
+        VIEWSTATUS_3DSURFACE = 32
+    } VIEWSTATUS;
+
+    typedef enum tagHITRESULT
+    {
+        HITRESULT_OUTSIDE = 0,
+        HITRESULT_TRANSPARENT = 1,
+        HITRESULT_CLOSE = 2,
+        HITRESULT_HIT = 3
+    } HITRESULT;
+
+    typedef enum tagDVASPECT2
+    {
+        DVASPECT_OPAQUE = 16,
+        DVASPECT_TRANSPARENT = 32
+    } DVASPECT2;
+
+    typedef struct tagExtentInfo
+    {
+        ULONG cb;
+        DWORD dwExtentMode;
+        SIZEL sizelProposed;
+    } DVEXTENTINFO;
+
+    typedef enum tagAspectInfoFlag
+    {
+        DVASPECTINFOFLAG_CANOPTIMIZE = 1
+    } DVASPECTINFOFLAG;
+
+    typedef struct tagAspectInfo
+    {
+        ULONG cb;
+        DWORD dwFlags;
+    } DVASPECTINFO;
+
+    HRESULT GetRect(
+        [in] DWORD dwAspect,
+        [out] LPRECTL pRect);
+
+    HRESULT GetViewStatus( [out] DWORD *pdwStatus );
+
+    HRESULT QueryHitPoint(
+        [in] DWORD dwAspect,
+        [in] LPCRECT pRectBounds,
+        [in] POINT ptlLoc,
+        [in] LONG lCloseHint,
+        [out] DWORD *pHitResult);
+
+    HRESULT QueryHitRect(
+        [in] DWORD dwAspect,
+        [in] LPCRECT pRectBounds,
+        [in] LPCRECT pRectLoc,
+        [in] LONG lCloseHint,
+        [out] DWORD *pHitResult);
+
+    HRESULT GetNaturalExtent (
+        [in] DWORD dwAspect,
+        [in] LONG lindex,
+        [in] DVTARGETDEVICE *ptd,
+        [in] HDC hicTargetDev,
+        [in] DVEXTENTINFO *pExtentInfo,
+        [out] LPSIZEL pSizel);
+}
+
+
+/*****************************************************************************
+ * IProvideClassInfo interface
+ */
+[
+    object,
+    uuid(b196b283-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IProvideClassInfo : IUnknown
+{
+    typedef IProvideClassInfo *LPPROVIDECLASSINFO;
+
+cpp_quote("#ifdef __WINESRC__")
+cpp_quote("#undef GetClassInfo")
+cpp_quote("#endif")
+
+    HRESULT GetClassInfo( [out] ITypeInfo ** ppTI );
+}
+
+
+/*****************************************************************************
+ * IProvideClassInfo2 interface
+ */
+[
+    object,
+    uuid(a6bc3ac0-dbaa-11ce-9de3-00aa004bb851),
+    pointer_default(unique)
+]
+interface IProvideClassInfo2 : IProvideClassInfo
+{
+    typedef IProvideClassInfo2 *LPPROVIDECLASSINFO2;
+
+    typedef enum tagGUIDKIND
+    {
+        GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
+    } GUIDKIND;
+
+    HRESULT GetGUID(
+        [in]  DWORD dwGuidKind,
+        [out] GUID *pGUID );
+}
+
+
+/*****************************************************************************
+ * IConnectionPoint interface
+ */
+interface IConnectionPointContainer; /* forward declarations */
+interface IEnumConnections;
+
+[
+    object,
+    uuid(b196b286-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IConnectionPoint : IUnknown
+{
+    typedef IConnectionPoint *PCONNECTIONPOINT, *LPCONNECTIONPOINT;
+
+    HRESULT GetConnectionInterface( [out] IID *pIID );
+    HRESULT GetConnectionPointContainer( [out] IConnectionPointContainer **ppCPC );
+    HRESULT Advise( [in] IUnknown *pUnkSink, [out] DWORD *pdwCookie );
+    HRESULT Unadvise( [in] DWORD dwCookie );
+    HRESULT EnumConnections( [out] IEnumConnections **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IConnectionPointContainer interface
+ */
+interface IEnumConnectionPoints; /* forward declaration */
+[
+    object,
+    uuid(b196b284-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IConnectionPointContainer : IUnknown
+{
+    typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER, *LPCONNECTIONPOINTCONTAINER;
+
+    HRESULT EnumConnectionPoints( [out] IEnumConnectionPoints **ppEnum );
+    HRESULT FindConnectionPoint( [in] REFIID riid, [out] IConnectionPoint **ppCP );
+}
+
+
+/*****************************************************************************
+ * IEnumConnections interface
+ */
+[
+    object,
+    uuid(b196b287-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IEnumConnections : IUnknown
+{
+    typedef IEnumConnections *PENUMCONNECTIONS, *LPENUMCONNECTIONS;
+
+    typedef struct tagCONNECTDATA
+    {
+        IUnknown *pUnk;
+        DWORD dwCookie;
+    } CONNECTDATA, *PCONNECTDATA, *LPCONNECTDATA;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd,
+        [out] ULONG *pcFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd,
+        [out] ULONG *pcFetched);
+
+    HRESULT Skip( [in] ULONG cConnections );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumConnections **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IEnumConnectionPoints interface
+ */
+[
+    object,
+    uuid(b196b285-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IEnumConnectionPoints : IUnknown
+{
+    typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS, *LPENUMCONNECTIONPOINTS;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP,
+        [out] ULONG *pcFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cConnections,
+        [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP,
+        [out] ULONG *pcFetched);
+
+    HRESULT Skip( [in] ULONG cConnections );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumConnectionPoints **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IPropertyPage interface
+ */
+interface IPropertyPageSite;  /* forward declaration */
+[
+    object,
+    uuid(b196b28d-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IPropertyPage : IUnknown
+{
+    typedef IPropertyPage *LPPROPERTYPAGE;
+
+    typedef struct tagPROPPAGEINFO
+    {
+        ULONG cb;
+        LPOLESTR pszTitle;
+        SIZE size;
+        LPOLESTR pszDocString;
+        LPOLESTR pszHelpFile;
+        DWORD dwHelpContext;
+    } PROPPAGEINFO, *LPPROPPAGEINFO;
+
+    HRESULT SetPageSite( [in] IPropertyPageSite *pPageSite );
+
+    HRESULT Activate(
+        [in] HWND hWndParent,
+        [in] LPCRECT pRect,
+        [in] BOOL bModal);
+
+    HRESULT Deactivate();
+
+    HRESULT GetPageInfo( [out] PROPPAGEINFO *pPageInfo );
+
+    HRESULT SetObjects(
+        [in] ULONG cObjects,
+        [in, size_is(cObjects)] IUnknown **ppUnk);
+
+    HRESULT Show( [in] UINT nCmdShow );
+
+    HRESULT Move( [in] LPCRECT pRect );
+
+    HRESULT IsPageDirty();
+
+    HRESULT Apply();
+
+    HRESULT Help( [in] LPCOLESTR pszHelpDir );
+
+    HRESULT TranslateAccelerator( [in] MSG *pMsg );
+}
+
+
+/*****************************************************************************
+ * IPropertyPage2 interface
+ */
+[
+    object,
+    uuid(01e44665-24ac-101b-84ed-08002b2ec713),
+    pointer_default(unique)
+]
+interface IPropertyPage2 : IPropertyPage
+{
+    typedef IPropertyPage2 *LPPROPERTYPAGE2;
+
+    HRESULT EditProperty( [in] DISPID dispID );
+}
+
+
+/*****************************************************************************
+ * IPropertyPageSite interface
+ */
+[
+    object,
+    uuid(b196b28c-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface IPropertyPageSite : IUnknown
+{
+    typedef IPropertyPageSite *LPPROPERTYPAGESITE;
+
+    typedef enum tagPROPPAGESTATUS
+    {
+        PROPPAGESTATUS_DIRTY = 0x1,
+        PROPPAGESTATUS_VALIDATE = 0x2,
+        PROPPAGESTATUS_CLEAN = 0x4
+    } PROPPAGESTATUS;
+
+    HRESULT OnStatusChange( [in] DWORD dwFlags );
+    HRESULT GetLocaleID( [out] LCID *pLocaleID );
+    HRESULT GetPageContainer( [out] IUnknown **ppUnk );
+    HRESULT TranslateAccelerator( [in] MSG *pMsg );
+}
+
+
+/*****************************************************************************
+ * IPropertyNotifySink interface
+ */
+[
+    object,
+    uuid(9bfbbc02-eff1-101a-84ed-00aa00341d07),
+    pointer_default(unique)
+]
+interface IPropertyNotifySink : IUnknown
+{
+    typedef IPropertyNotifySink *LPPROPERTYNOTIFYSINK;
+
+    HRESULT OnChanged( [in] DISPID dispID );
+    HRESULT OnRequestEdit( [in] DISPID dispID );
+}
+
+
+/*****************************************************************************
+ * ISimpleFrameSite interface
+ */
+[
+    object,
+    uuid(742b0e01-14e6-101b-914e-00aa00300cab),
+    pointer_default(unique)
+]
+interface ISimpleFrameSite : IUnknown
+{
+    typedef ISimpleFrameSite *LPSIMPLEFRAMESITE;
+
+    HRESULT PreMessageFilter(
+        [in] HWND hWnd,
+        [in] UINT msg,
+        [in] WPARAM wp,
+        [in] LPARAM lp,
+        [out] LRESULT *plResult,
+        [out] DWORD *pdwCookie);
+
+    HRESULT PostMessageFilter(
+        [in] HWND hWnd,
+        [in] UINT msg,
+        [in] WPARAM wp,
+        [in] LPARAM lp,
+        [out] LRESULT *plResult,
+        [in] DWORD dwCookie);
+}
+
+
+/*****************************************************************************
+ * IPersistStreamInit interface
+ */
+[
+    object,
+    uuid(7fd52380-4e07-101b-ae2d-08002b2ec713),
+    pointer_default(unique)
+]
+interface IPersistStreamInit : IPersist
+{
+    typedef IPersistStreamInit *LPPERSISTSTREAMINIT;
+
+    HRESULT IsDirty();
+    HRESULT Load( [in] LPSTREAM pStm );
+    HRESULT Save( [in] LPSTREAM pStm, [in] BOOL fClearDirty );
+    HRESULT GetSizeMax( [out] ULARGE_INTEGER *pcbSize );
+    HRESULT InitNew();
+}
+
+
+/*****************************************************************************
+ * IPersistMemory interface
+ */
+[
+    object,
+    uuid(bd1ae5e0-a6ae-11ce-bd37-504200c10000),
+    pointer_default(unique)
+]
+interface IPersistMemory : IPersist
+{
+    typedef IPersistMemory *LPPERSISTMEMORY;
+
+    HRESULT IsDirty();
+
+    [local]
+    HRESULT Load(
+        [in, size_is(cbSize)] LPVOID pMem,
+        [in] ULONG cbSize);
+
+    [call_as(Load)]
+    HRESULT RemoteLoad(
+        [in, size_is(cbSize)] BYTE *pMem,
+        [in] ULONG cbSize);
+
+    [local]
+    HRESULT Save(
+        [out, size_is(cbSize)] LPVOID pMem,
+        [in] BOOL fClearDirty,
+        [in] ULONG cbSize);
+
+    [call_as(Save)]
+    HRESULT RemoteSave(
+        [out, size_is(cbSize)] BYTE *pMem,
+        [in] BOOL fClearDirty,
+        [in] ULONG cbSize);
+
+    HRESULT GetSizeMax( [out] ULONG *pCbSize );
+    HRESULT InitNew();
+}
+
+
+/*****************************************************************************
+ * IPersistPropertyBag interface
+ */
+[
+    object,
+    uuid(37d84f60-42cb-11ce-8135-00aa004bb851),
+    pointer_default(unique)
+]
+interface IPersistPropertyBag : IPersist
+{
+    typedef IPersistPropertyBag *LPPERSISTPROPERTYBAG;
+
+    HRESULT InitNew();
+
+    HRESULT Load(
+        [in] IPropertyBag *pPropBag,
+        [in] IErrorLog *pErrorLog);
+
+    HRESULT Save(
+        [in] IPropertyBag *pPropBag,
+        [in] BOOL fClearDirty,
+        [in] BOOL fSaveAllProperties);
+}
+
+
+/*****************************************************************************
+ * IPropertyBag2 interface
+ */
+[
+    object,
+    uuid(22f55882-280b-11d0-a8a9-00a0c90c2004),
+    pointer_default(unique)
+]
+interface IPropertyBag2 : IUnknown
+{
+    typedef IPropertyBag2 *LPPROPERTYBAG2;
+
+    typedef enum tagPROPBAG2_TYPE
+    {
+        PROPBAG2_TYPE_UNDEFINED = 0,
+        PROPBAG2_TYPE_DATA = 1,
+        PROPBAG2_TYPE_URL = 2,
+        PROPBAG2_TYPE_OBJECT = 3,
+        PROPBAG2_TYPE_STREAM = 4,
+        PROPBAG2_TYPE_STORAGE = 5,
+        PROPBAG2_TYPE_MONIKER = 6
+    } PROPBAG2_TYPE;
+
+    typedef struct tagPROPBAG2
+    {
+        DWORD dwType;
+        VARTYPE vt;
+        CLIPFORMAT cfType;
+        DWORD dwHint;
+        LPOLESTR pstrName;
+        CLSID clsid;
+    } PROPBAG2;
+
+    HRESULT Read(
+        [in] ULONG cProperties,
+        [in] PROPBAG2 *pPropBag,
+        [in] IErrorLog *pErrLog,
+        [out] VARIANT *pvarValue,
+        [out] HRESULT *phrError);
+
+    HRESULT Write(
+        [in] ULONG cProperties,
+        [in] PROPBAG2 *pPropBag,
+        [in] VARIANT *pvarValue);
+
+    HRESULT CountProperties(
+        [out] ULONG *pcProperties );
+
+    HRESULT GetPropertyInfo(
+        [in] ULONG iProperty,
+        [in] ULONG cProperties,
+        [out] PROPBAG2 *pPropBag,
+        [out] ULONG *pcProperties);
+
+    HRESULT LoadObject(
+        [in] LPCOLESTR pstrName,
+        [in] DWORD dwHint,
+        [in] IUnknown *pUnkObject,
+        [in] IErrorLog *pErrLog);
+}
+
+
+/*****************************************************************************
+ * IPersistPropertyBag2 interface
+ */
+[
+    object,
+    uuid(22f55881-280b-11d0-a8a9-00a0c90c2004),
+    pointer_default(unique)
+]
+interface IPersistPropertyBag2 : IPersist
+{
+    typedef IPersistPropertyBag2 *LPPERSISTPROPERTYBAG2;
+
+    HRESULT InitNew();
+
+    HRESULT Load(
+        [in] IPropertyBag2 *pPropBag,
+        [in] IErrorLog *pErrorLog);
+
+    HRESULT Save(
+        [in] IPropertyBag2 *pPropBag,
+        [in] BOOL fClearDirty,
+        [in] BOOL fSaveAllProperties);
+
+    HRESULT IsDirty();
+}
+
+
+/*****************************************************************************
+ * ISpecifyPropertyPages interface
+ */
+[
+    object,
+    uuid(b196b28b-bab4-101a-b69c-00aa00341d07),
+    pointer_default(unique)
+]
+interface ISpecifyPropertyPages : IUnknown
+{
+    typedef ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES;
+
+    typedef struct tagCAUUID
+    {
+	ULONG cElems;
+        [size_is(cElems)] GUID *pElems;
+    } CAUUID, *LPCAUUID;
+
+    HRESULT GetPages( [out] CAUUID *pPages );
+}
+
+
+/*****************************************************************************
+ * IPerPropertyBrowsing interface
+ */
+[
+    object,
+    uuid(376bd3aa-3845-101b-84ed-08002b2ec713),
+    pointer_default(unique)
+]
+interface IPerPropertyBrowsing : IUnknown
+{
+    typedef IPerPropertyBrowsing *LPPERPROPERTYBROWSING;
+
+    typedef struct tagCALPOLESTR
+    {
+        ULONG cElems;
+        [size_is(cElems)] LPOLESTR *pElems;
+    } CALPOLESTR, *LPCALPOLESTR;
+
+    typedef struct tagCADWORD
+    {
+        ULONG cElems;
+        [size_is(cElems)] DWORD *pElems;
+    } CADWORD, *LPCADWORD;
+
+    HRESULT GetDisplayString(
+        [in] DISPID dispID,
+        [out] BSTR *pBstr);
+
+    HRESULT MapPropertyToPage(
+        [in] DISPID dispID,
+        [out] CLSID *pClsid);
+
+    HRESULT GetPredefinedStrings(
+        [in] DISPID dispID,
+        [out] CALPOLESTR *pCaStringsOut,
+        [out] CADWORD *pCaCookiesOut);
+
+    HRESULT GetPredefinedValue(
+        [in] DISPID dispID,
+        [in] DWORD dwCookie,
+        [out] VARIANT *pVarOut);
+}
+
+
+/*****************************************************************************
+ * IAdviseSinkEx interface
+ */
+[
+    object,
+    uuid(3af24290-0c96-11ce-a0cf-00aa00600ab8),
+    pointer_default(unique)
+]
+interface IAdviseSinkEx : IAdviseSink
+{
+    typedef IAdviseSinkEx *LPADVISESINKEX;
+
+    [local]
+    void OnViewStatusChange( [in] DWORD dwViewStatus );
+
+    [call_as(OnViewStatusChange)]
+    HRESULT RemoteOnViewStatusChange( [in] DWORD dwViewStatus );
+}
+
+
+/*****************************************************************************
+ * IPointerInactive interface
+ */
+[
+    object,
+    uuid(55980ba0-35aa-11cf-b671-00aa004cd6d8),
+    pointer_default(unique)
+]
+interface IPointerInactive : IUnknown
+{
+    typedef IPointerInactive *LPPOINTERINACTIVE;
+
+    HRESULT GetActivationPolicy(
+        [out] DWORD *pdwPolicy);
+
+    HRESULT OnInactiveMouseMove(
+        [in] LPCRECT pRectBounds,
+        [in] LONG x,
+        [in] LONG y,
+        [in] DWORD grfKeyState);
+
+    HRESULT OnInactiveSetCursor(
+        [in] LPCRECT pRectBounds,
+        [in] LONG x,
+        [in] LONG y,
+        [in] DWORD dwMouseMsg,
+        [in] BOOL fSetAlways);
+}
+
+
+/*****************************************************************************
+ * IOleUndoUnit interface
+ */
+interface IOleUndoManager;  /* forward declaration */
+[
+    object,
+    uuid(894ad3b0-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IOleUndoUnit : IUnknown
+{
+    typedef IOleUndoUnit *LPOLEUNDOUNIT;
+
+    HRESULT Do( [in] IOleUndoManager *pUndoManager );
+    HRESULT GetDescription( [out] BSTR *pBstr );
+    HRESULT GetUnitType( [out] CLSID *pClsid, [out] LONG *plID );
+    HRESULT OnNextAdd();
+}
+
+
+/*****************************************************************************
+ * IOleParentUndoUnit interface
+ */
+[
+    object,
+    uuid(a1faf330-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IOleParentUndoUnit : IOleUndoUnit
+{
+    typedef IOleParentUndoUnit *LPOLEPARENTUNDOUNIT;
+
+    HRESULT Open( [in] IOleParentUndoUnit *pPUU );
+    HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit );
+    HRESULT Add( [in] IOleUndoUnit *pUU );
+    HRESULT FindUnit( [in] IOleUndoUnit *pUU );
+    HRESULT GetParentState( [out] DWORD *pdwState );
+}
+
+
+/*****************************************************************************
+ * IEnumOleUndoUnits interface
+ */
+[
+    object,
+    uuid(b3e7c340-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IEnumOleUndoUnits : IUnknown
+{
+    typedef IEnumOleUndoUnits *LPENUMOLEUNDOUNITS;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cElt,
+        [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt,
+        [out] ULONG *pcEltFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cElt,
+        [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt,
+        [out] ULONG *pcEltFetched);
+
+    HRESULT Skip( [in] ULONG cElt );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumOleUndoUnits **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IOleUndoManager interface
+ */
+[
+    object,
+    uuid(d001f200-ef97-11ce-9bc9-00aa00608e01),
+    pointer_default(unique)
+]
+interface IOleUndoManager : IUnknown
+{
+    typedef IOleUndoManager *LPOLEUNDOMANAGER;
+
+    HRESULT Open( [in] IOleParentUndoUnit *pPUU );
+    HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit );
+    HRESULT Add( [in] IOleUndoUnit *pUU );
+    HRESULT GetOpenParentState( [out] DWORD *pdwState );
+    HRESULT DiscardFrom( [in] IOleUndoUnit *pUU );
+    HRESULT UndoTo( [in] IOleUndoUnit *pUU );
+    HRESULT RedoTo( [in] IOleUndoUnit *pUU );
+    HRESULT EnumUndoable( [out] IEnumOleUndoUnits **ppEnum );
+    HRESULT EnumRedoable( [out] IEnumOleUndoUnits **ppEnum );
+    HRESULT GetLastUndoDescription( [out] BSTR *pBstr );
+    HRESULT GetLastRedoDescription( [out] BSTR *pBstr );
+    HRESULT Enable( [in] BOOL fEnable );
+}
+
+
+/*****************************************************************************
+ * IQuickActivate interface
+ */
+[
+    object,
+    uuid(cf51ed10-62fe-11cf-bf86-00a0c9034836),
+    pointer_default(unique)
+]
+interface IQuickActivate : IUnknown
+{
+    typedef IQuickActivate *LPQUICKACTIVATE;
+
+    typedef enum tagQACONTAINERFLAGS
+    {
+        QACONTAINER_SHOWHATCHING = 0x1,
+        QACONTAINER_SHOWGRABHANDLES = 0x2,
+        QACONTAINER_USERMODE = 0x4,
+        QACONTAINER_DISPLAYASDEFAULT = 0x8,
+        QACONTAINER_UIDEAD = 0x10,
+        QACONTAINER_AUTOCLIP = 0x20,
+        QACONTAINER_MESSAGEREFLECT = 0x40,
+        QACONTAINER_SUPPORTSMNEMONICS = 0x80
+    } QACONTAINERFLAGS;
+
+    typedef DWORD OLE_COLOR;
+    
+    typedef struct tagQACONTAINER
+    {
+        ULONG cbSize;
+        IOleClientSite *pClientSite;
+        IAdviseSinkEx *pAdviseSink;
+        IPropertyNotifySink *pPropertyNotifySink;
+        IUnknown *pUnkEventSink;
+        DWORD dwAmbientFlags;
+        OLE_COLOR colorFore;
+        OLE_COLOR colorBack;
+        IFont *pFont;
+        IOleUndoManager *pUndoMgr;
+        DWORD dwAppearance;
+        LONG lcid;
+        HPALETTE hpal;
+        IBindHost *pBindHost;
+        IOleControlSite *pOleControlSite;
+        IServiceProvider *pServiceProvider;
+    } QACONTAINER;
+
+    typedef struct tagQACONTROL
+    {
+        ULONG cbSize;
+        DWORD dwMiscStatus;
+        DWORD dwViewStatus;
+        DWORD dwEventCookie;
+        DWORD dwPropNotifyCookie;
+        DWORD dwPointerActivationPolicy;
+    } QACONTROL;
+
+    [local]
+    HRESULT QuickActivate(
+        [in] QACONTAINER *pQaContainer,
+        [in,out] QACONTROL *pQaControl);
+
+    [call_as(QuickActivate)]
+    HRESULT RemoteQuickActivate(
+        [in] QACONTAINER *pQaContainer,
+        [out] QACONTROL *pQaControl);
+
+    HRESULT SetContentExtent( [in] LPSIZEL pSizel );
+
+    HRESULT GetContentExtent( [out] LPSIZEL pSizel );
+}