Owen Rudge wrote:
--- dlls/comctl32/imagelist.c | 318 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 317 insertions(+), 1 deletions(-) Hi.
+/************************************************************************* + * IImageList implementation + */ + +typedef struct { + const IImageListVtbl *lpVtbl; + LONG ref; + HIMAGELIST hImageList; +} ImageListImpl; + You can't do that. HIMAGELIST should be the same thing as IImageList. See here: 1) from commctrl.h --- #ifdef __cplusplus FORCEINLINE HIMAGELIST IImageListToHIMAGELIST(struct IImageList *himl) { return reinterpret_cast<HIMAGELIST>(himl); } #else #define IImageListToHIMAGELIST(himl) ((HIMAGELIST)(himl)) #endif --- 2) SHGetImageList docs from http://msdn.microsoft.com/en-us/library/bb762185%28VS.85%29.aspx ---* Remarks* The *IImageList* pointer type, such as that returned in the /ppv/ parameter, can be cast as an HIMAGELIST as needed; for example, for use in a list view. Conversely, an HIMAGELIST can be cast as a pointer to an *IImageList.* ---