shdocvw: Add ITaskbarList2 Interface
André Hentschel
nerv at dawncrow.de
Mon Jun 20 12:08:59 CDT 2011
Am 20.06.2011 17:50, schrieb Henri Verbeet:
> 2011/6/18 André Hentschel <nerv at dawncrow.de>:
>> -static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList *iface, REFIID riid, void **object)
>> +static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList2 *iface, REFIID riid, LPVOID *ppv)
>> {
>> - TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object);
>> + struct taskbar_list *This = impl_from_ITaskbarList2(iface);
>> +
>> + *ppv = NULL;
>> +
>> + if(IsEqualGUID(&IID_IUnknown, riid)) {
>> + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
>> + *ppv = &This->ITaskbarList2_iface;
>> + }else if(IsEqualGUID(&IID_ITaskbarList, riid)) {
>> + TRACE("(%p)->(IID_ITaskbarList %p)\n", This, ppv);
>> + *ppv = &This->ITaskbarList2_iface;
>> + }else if(IsEqualGUID(&IID_ITaskbarList2, riid)) {
>> + TRACE("(%p)->(IID_ITaskbarList2 %p)\n", This, ppv);
>> + *ppv = &This->ITaskbarList2_iface;
>> + }
>>
>> - if (IsEqualGUID(riid, &IID_ITaskbarList)
>> - || IsEqualGUID(riid, &IID_IUnknown))
>> - {
>> - IUnknown_AddRef(iface);
>> - *object = iface;
>> + if(*ppv) {
>> + IUnknown_AddRef((IUnknown*)*ppv);
>> return S_OK;
>> }
>>
>> - WARN("%s not implemented, returning E_NOINTERFACE\n", debugstr_guid(riid));
>> -
>> - *object = NULL;
>> + WARN("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppv);
>> return E_NOINTERFACE;
>> }
>>
> I'm not sure that's really an improvement.
>
>
I thought i use the way the webbrowser queryinterface in the same dll is implemented.
Of course i can change less here.
--
Best Regards, André Hentschel
More information about the wine-devel
mailing list