[try 2] [PATCH 01/12] comctl32: Add basic structure for IImageList interface

Alexandre Julliard julliard at winehq.org
Thu Nov 12 08:13:13 CST 2009


Owen Rudge <orudge at 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
julliard at winehq.org



More information about the wine-devel mailing list