[2/2] msxml3: Add IDispatchEx support to IXMLDOMElement

Jacek Caban jacek at codeweavers.com
Thu Aug 20 07:15:05 CDT 2009


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



More information about the wine-devel mailing list