2 * Implementation of class factory for IE Web Browser
4 * 2001 John R. Sheets (for CodeWeavers)
8 #include "debugtools.h"
11 DEFAULT_DEBUG_CHANNEL(shdocvw
);
13 /**********************************************************************
14 * Implement the IWebBrowser class factory
16 * (Based on implementation in ddraw/main.c)
19 /**********************************************************************
20 * WBCF_QueryInterface (IUnknown)
22 static HRESULT WINAPI
WBCF_QueryInterface(LPCLASSFACTORY iface
,
23 REFIID riid
, LPVOID
*ppobj
)
25 ICOM_THIS(IClassFactoryImpl
, iface
);
30 * Perform a sanity check on the parameters.
32 if ((This
== NULL
) || (ppobj
== NULL
) )
38 /************************************************************************
39 * WBCF_AddRef (IUnknown)
41 static ULONG WINAPI
WBCF_AddRef(LPCLASSFACTORY iface
)
43 ICOM_THIS(IClassFactoryImpl
, iface
);
49 /************************************************************************
50 * WBCF_Release (IUnknown)
52 static ULONG WINAPI
WBCF_Release(LPCLASSFACTORY iface
)
54 ICOM_THIS(IClassFactoryImpl
, iface
);
56 /* static class, won't be freed */
61 /************************************************************************
62 * WBCF_CreateInstance (IClassFactory)
64 static HRESULT WINAPI
WBCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
,
65 REFIID riid
, LPVOID
*ppobj
)
67 ICOM_THIS(IClassFactoryImpl
, iface
);
69 /* Don't support aggregation (yet?) */
72 TRACE ("Failed attempt to aggregate IWebBrowser\n");
73 return CLASS_E_NOAGGREGATION
;
76 TRACE("(%p)->(%p,%s,%p)\n", This
, pOuter
, debugstr_guid(riid
), ppobj
);
78 if ((IsEqualGUID (&IID_IOleObject
, riid
)))
80 TRACE ("Instantiating IOleObject component\n");
81 *ppobj
= (LPVOID
)&SHDOCVW_OleObject
;
85 return CLASS_E_CLASSNOTAVAILABLE
;
88 /************************************************************************
89 * WBCF_LockServer (IClassFactory)
91 static HRESULT WINAPI
WBCF_LockServer(LPCLASSFACTORY iface
, BOOL dolock
)
93 ICOM_THIS(IClassFactoryImpl
, iface
);
94 FIXME("(%p)->(%d),stub!\n", This
, dolock
);
98 static ICOM_VTABLE(IClassFactory
) WBCF_Vtbl
=
100 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
108 IClassFactoryImpl SHDOCVW_ClassFactory
= { &WBCF_Vtbl
, 1 };