Owen Rudge <oru...@codeweavers.com> writes: > @@ -2926,10 +2927,295 @@ ImageList_SetColorTable (HIMAGELIST himl, UINT > uStartIndex, UINT cEntries, CONST > HRESULT WINAPI > ImageList_CoCreateInstance (REFCLSID rclsid, const IUnknown *punkOuter, > REFIID riid, void **ppv) > { > - FIXME("STUB: %s %p %s %p\n", debugstr_guid(rclsid), punkOuter, > debugstr_guid(riid), ppv); > - return E_NOINTERFACE; > + TRACE("(%s,%p,%s,%p)\n", debugstr_guid(rclsid), punkOuter, > debugstr_guid(riid), ppv); > + > + if (!IsEqualIID(&IID_IImageList, riid)) > + return E_NOINTERFACE;
You should be checking the clsid here. The iid is checked in QueryInterface. > @@ -2948,6 +3234,38 @@ ImageList_CoCreateInstance (REFCLSID rclsid, const > IUnknown *punkOuter, REFIID r > HRESULT WINAPI > HIMAGELIST_QueryInterface (HIMAGELIST himl, REFIID riid, void **ppv) > { > - FIXME("STUB: %p %s %p\n", himl, debugstr_guid(riid), ppv); > - return E_NOINTERFACE; > + TRACE("(%p,%s,%p)\n", himl, debugstr_guid(riid), ppv); > + > + *ppv = NULL; > + > + /* TODO: IID_IImageList2 support */ > + if (!IsEqualIID(&IID_IImageList, riid)) > + return E_NOINTERFACE; This one is redundant too. > @@ -30,6 +30,9 @@ > /* the ones with offsets at the end are the same as in Windows */ > struct _IMAGELIST > { > + const struct IImageListVtbl *lpVtbl;/* IImageList vtable */ > + LONG ref; /* reference count */ > + > DWORD magic; /* 00: 'SAMX' */ > INT cCurImage; /* 04: ImageCount */ > INT cMaxImage; /* 08: maximages */ Please update the comment since the offsets no longer match Windows. -- Alexandre Julliard julli...@winehq.org