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 };