From dff6be098eef5accd2a39350baa774afa42d63a3 Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Fri, 13 Nov 2009 11:14:23 -0600 Subject: [PATCH] comctl32: Implement Add, ReplaceIcon, GetImageCount, SetImageCount in IImageList. --- dlls/comctl32/imagelist.c | 43 ++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c index a8101e6b4e0..8853e224b0b 100644 --- a/dlls/comctl32/imagelist.c +++ b/dlls/comctl32/imagelist.c @@ -2985,15 +2985,37 @@ static ULONG WINAPI ImageListImpl_Release(IImageList *iface) static HRESULT WINAPI ImageListImpl_Add(IImageList *iface, HBITMAP hbmImage, HBITMAP hbmMask, int *pi) { - FIXME("STUB: %p %p %p %p\n", iface, hbmImage, hbmMask, pi); - return E_NOTIMPL; + HIMAGELIST This = (HIMAGELIST) iface; + int ret; + + if (!pi) + return E_FAIL; + + ret = ImageList_Add(This, hbmImage, hbmMask); + + if (ret == -1) + return E_FAIL; + + *pi = ret; + return S_OK; } static HRESULT WINAPI ImageListImpl_ReplaceIcon(IImageList *iface, int i, HICON hicon, int *pi) { - FIXME("STUB: %p %d %p %p\n", iface, i, hicon, pi); - return E_NOTIMPL; + HIMAGELIST This = (HIMAGELIST) iface; + int ret; + + if (!pi) + return E_FAIL; + + ret = ImageList_ReplaceIcon(This, i, hicon); + + if (ret == -1) + return E_FAIL; + + *pi = ret; + return S_OK; } static HRESULT WINAPI ImageListImpl_SetOverlayImage(IImageList *iface, @@ -3026,8 +3048,7 @@ static HRESULT WINAPI ImageListImpl_Draw(IImageList *iface, static HRESULT WINAPI ImageListImpl_Remove(IImageList *iface, int i) { - FIXME("STUB: %p %d\n", iface, i); - return E_NOTIMPL; + return (ImageList_Remove((HIMAGELIST) iface, i) == 0) ? E_FAIL : S_OK; } static HRESULT WINAPI ImageListImpl_GetIcon(IImageList *iface, int i, UINT flags, @@ -3089,15 +3110,17 @@ static HRESULT WINAPI ImageListImpl_SetIconSize(IImageList *iface, int cx, static HRESULT WINAPI ImageListImpl_GetImageCount(IImageList *iface, int *pi) { - FIXME("STUB: %p %p\n", iface, pi); - return E_NOTIMPL; + if (!pi) + return E_FAIL; + + *pi = ImageList_GetImageCount((HIMAGELIST) iface); + return S_OK; } static HRESULT WINAPI ImageListImpl_SetImageCount(IImageList *iface, UINT uNewCount) { - FIXME("STUB: %p %d\n", iface, uNewCount); - return E_NOTIMPL; + return ImageList_SetImageCount((HIMAGELIST) iface, uNewCount) ? S_OK : E_FAIL; } static HRESULT WINAPI ImageListImpl_SetBkColor(IImageList *iface, COLORREF clrBk,