IImageList 接口是用于操作图像列表的 Windows API 接口之一。它定义了一组方法,允许开发者对图像列表进行增、删、改等操作。

以下是 IImageList 接口的定义:
DECLARE_INTERFACE_(IImageList, IUnknown)
{
    // IUnknown methods
    STDMETHOD(QueryInterface)(THIS_ REFIID, void **) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    // IImageList methods
    STDMETHOD(ImageList_SetIconSize)(THIS_ int cx, int cy) PURE;
    STDMETHOD(ImageList_GetIconSize)(THIS_ int *cx, int *cy) PURE;
    STDMETHOD(ImageList_SetImageCount)(THIS_ UINT uCount) PURE;
    STDMETHOD(ImageList_GetImageCount)(THIS_ UINT *puCount) PURE;
    STDMETHOD(ImageList_SetBkColor)(THIS_ COLORREF clrBk, COLORREF *pclr) PURE;
    STDMETHOD(ImageList_GetBkColor)(THIS_ COLORREF *pclr) PURE;
    STDMETHOD(ImageList_SetOverlayImage)(THIS_ int iImage, int iOverlay) PURE;
    STDMETHOD(ImageList_ReplaceIcon)(THIS_ int i, HICON hicon, int *pi) PURE;
    STDMETHOD(ImageList_Replace)(THIS_ int i, HBITMAP hbmImage, HBITMAP hbmMask) PURE;
    STDMETHOD(ImageList_AddMasked)(THIS_ HBITMAP hbmImage, COLORREF crMask, int *pi) PURE;
    STDMETHOD(ImageList_Draw)(THIS_ IMAGELISTDRAWPARAMS *pimldp) PURE;
    STDMETHOD(ImageList_Remove)(THIS_ int i) PURE;
    STDMETHOD(ImageList_GetIcon)(THIS_ int i, UINT flags, HICON *picon) PURE;
    STDMETHOD(ImageList_GetImageInfo)(THIS_ int i, IMAGEINFO *pImageInfo) PURE;
    STDMETHOD(ImageList_Copy)(THIS_ int iDst, IUnknown *punkSrc, int iSrc, UINT uFlags) PURE;
    STDMETHOD(ImageList_Merge)(THIS_ int i1, IUnknown *punk2, int i2, int dx, int dy, REFIID riid, PVOID *ppv) PURE;
    STDMETHOD(ImageList_Clone)(THIS_ REFIID riid, PVOID *ppv) PURE;
    STDMETHOD(ImageList_GetImageRect)(THIS_ int i, RECT *prc) PURE;
    STDMETHOD(ImageList_GetIconSize)(THIS_ int *cx, int *cy) PURE;
    STDMETHOD(ImageList_SetIconSize)(THIS_ int cx, int cy) PURE;
    STDMETHOD(ImageList_GetImageCount)(THIS_ int *pi) PURE;
    STDMETHOD(ImageList_SetImageCount)(THIS_ UINT uNewCount) PURE;
    STDMETHOD(ImageList_SetBkColor)(THIS_ COLORREF clrBk, COLORREF *pclr) PURE;
    STDMETHOD(ImageList_GetBkColor)(THIS_ COLORREF *pclr) PURE;
    STDMETHOD(ImageList_BeginDrag)(THIS_ int iTrack, int dxHotspot, int dyHotspot) PURE;
    STDMETHOD(ImageList_EndDrag)(THIS) PURE;
    STDMETHOD(ImageList_DragEnter)(THIS_ HWND hwndLock, int x, int y) PURE;
    STDMETHOD(ImageList_DragLeave)(THIS_ HWND hwndLock) PURE;
    STDMETHOD(ImageList_DragMove)(THIS_ int x, int y) PURE;
    STDMETHOD(ImageList_SetDragCursorImage)(THIS_ IUnknown *punk, int iDrag, int dxHotspot, int dyHotspot) PURE;
    STDMETHOD(ImageList_DragShowNolock)(THIS_ BOOL fShow) PURE;
    STDMETHOD(GetDragImage)(THIS_ POINT *ppt, POINT *pptHotspot, REFIID riid, PVOID *ppv) PURE;
    STDMETHOD(GetItemFlags)(THIS_ int i, DWORD *dwFlags) PURE;
    STDMETHOD(GetOverlayImage)(THIS_ int iOverlay, int *piIndex) PURE;
};

这个接口包括了一系列用于管理图像列表的方法,包括设置图像大小、添加、删除、绘制图像等。IImageList 接口通常与图像列表控件一起使用,用于对图像列表进行更高级的操作。


转载请注明出处:http://www.zyzy.cn/article/detail/25043/Win32 API/Commoncontrols.h/IImageList