/*
 * Header includes for shdocvw.dll
 *
 * 2001 John R. Sheets (for CodeWeavers)
 *
 * Copyright (c) 2003 TransGaming Technologies
 * david@transgaming.com
 */

#ifndef __WINE_SHDOCVW_H
#define __WINE_SHDOCVW_H

/* FIXME: Is there a better way to deal with all these includes? */
#include "wingdi.h"
#include "winbase.h"
#include "winuser.h"

#include "ole2.h"
#include "olectl.h"
#include "wine/obj_webbrowser.h"
#include "oleidl.h"

/**********************************************************************
 * IWebBrowserImpl
 */
typedef struct
{
    /* IUnknown fields */
    ICOM_VFIELD(IWebBrowser);
    ICOM_VTABLE(IWebBrowser2)* lpVtbl2;
    ICOM_VTABLE(IViewObject)* lpVtbl_VO;
    ICOM_VTABLE(IViewObject2)* lpVtbl_VO2;
    ICOM_VTABLE(IOleObject)* lpVtbl_OOBJ;
    ICOM_VTABLE(IOleInPlaceObject)* lpVtbl_OIPO;
    ICOM_VTABLE(IOleControl)* lpVtbl_OC;
    ICOM_VTABLE(IProvideClassInfo)* lpVtbl_PCI;
    ICOM_VTABLE(IProvideClassInfo2)* lpVtbl_PCI2;
    ICOM_VTABLE(IConnectionPointContainer)* lpVtbl_CPC;
    ICOM_VTABLE(IQuickActivate)* lpVtbl_QA;
    ICOM_VTABLE(IPersistStorage)* lpVtbl_PS;
    ICOM_VTABLE(IPersistStreamInit)* lpVtbl_PSI;
    ICOM_VTABLE(IRunnableObject)* lpVtbl_RUNOBJ;

    DWORD ref;

} IWebBrowserImpl;

/********************************************************************
 * IConnectionPointImpl
 */
typedef struct
{
    /* IUnkown fields */
    ICOM_VFIELD(IConnectionPoint);
    DWORD ref;

    /* IConnectionPoint fields */
    DWORD dwCookieCount;
} IConnectionPointImpl;

/* webbrowser.c */
HRESULT SHDOCVW_CreateWebBrowser(IUnknown *pOuter, REFIID riid, LPVOID *ppobj);

/* Other stuff.. */

DEFINE_GUID(IID_INotifyDBEvents,
0xdb526cc0, 0xd188, 0x11cd, 0xad, 0x48, 0x0, 0xaa, 0x0, 0x3c, 0x9c, 0xb6);

#endif /* __WINE_SHDOCVW_H */
