Hi Alistair,
Alistair Leslie-Hughes wrote:
> Hi,
>
>
> Changelog:
> msxml3: Add IDispatchEx support to IXMLDOMElement
>
+ else if( IsEqualGUID( riid, &IID_IDispatch ) ||
+ IsEqualGUID( riid, &IID_IDispatchEx ) )
+ {
+ xmlnode *node = impl_from_IXMLDOMNode( This->node );
+
+ dispex_query_interface(&node->dispex, riid, ppvObject);
+
+ return *ppvObject ? S_OK : E_NOINTERFACE;
+ }
This should be handled by node's QueryInterface implementation.
+
+ xmlnode = impl_from_IXMLDOMNode( This->node );
It's not about your code as you follow msxml3 design, but this is ugly
and it shouldn't be needed.
+ init_dispex(&xmlnode->dispex, (IUnknown*)&This->lpVtbl, &domelem_dispex);
init_dispex is first called in create_basic_node, so you initialize it
second time here.
IMO msxml3 object inheritance needs serious design changes and it would
be better to do it before adding IDispatchEx support for node
implementations. I will send a few first patches.
Thanks,
Jacek