2 * Implementation of class factory for IE Web Browser
4 * Copyright 2001 John R. Sheets (for CodeWeavers)
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.
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.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "wine/debug.h"
25 WINE_DEFAULT_DEBUG_CHANNEL(shdocvw
);
27 /**********************************************************************
28 * Implement the IWebBrowser class factory
30 * (Based on implementation in ddraw/main.c)
33 /**********************************************************************
34 * WBCF_QueryInterface (IUnknown)
36 static HRESULT WINAPI
WBCF_QueryInterface(LPCLASSFACTORY iface
,
37 REFIID riid
, LPVOID
*ppobj
)
39 FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid
));
41 if (ppobj
== NULL
) return E_POINTER
;
46 /************************************************************************
47 * WBCF_AddRef (IUnknown)
49 static ULONG WINAPI
WBCF_AddRef(LPCLASSFACTORY iface
)
53 return 2; /* non-heap based object */
56 /************************************************************************
57 * WBCF_Release (IUnknown)
59 static ULONG WINAPI
WBCF_Release(LPCLASSFACTORY iface
)
61 SHDOCVW_UnlockModule();
63 return 1; /* non-heap based object */
66 /************************************************************************
67 * WBCF_CreateInstance (IClassFactory)
69 static HRESULT WINAPI
WBCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
,
70 REFIID riid
, LPVOID
*ppobj
)
72 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
74 /* Don't support aggregation (yet?) */
77 TRACE ("Failed attempt to aggregate IWebBrowser\n");
78 return CLASS_E_NOAGGREGATION
;
81 TRACE("(%p)->(%p,%s,%p)\n", This
, pOuter
, debugstr_guid(riid
), ppobj
);
83 if ((IsEqualGUID (&IID_IOleObject
, riid
)))
85 TRACE ("Instantiating IOleObject component\n");
86 *ppobj
= (LPVOID
)&SHDOCVW_OleObject
;
90 return CLASS_E_CLASSNOTAVAILABLE
;
93 /************************************************************************
94 * WBCF_LockServer (IClassFactory)
96 static HRESULT WINAPI
WBCF_LockServer(LPCLASSFACTORY iface
, BOOL dolock
)
98 TRACE("(%d)\n", dolock
);
101 SHDOCVW_LockModule();
103 SHDOCVW_UnlockModule();
108 static IClassFactoryVtbl WBCF_Vtbl
=
117 IClassFactoryImpl SHDOCVW_ClassFactory
= {&WBCF_Vtbl
};