ImageList_AddMasked 是 Win32 API 中用于将图像添加到图像列表的函数之一。这个函数在 Commctrl.h 头文件中声明。

以下是 ImageList_AddMasked 函数的基本信息:
int ImageList_AddMasked(
  HIMAGELIST himl,
  HBITMAP    hbmImage,
  COLORREF   crMask
);

参数说明:
  •  himl:图像列表的句柄。

  •  hbmImage:包含图像的位图句柄。

  •  crMask:指定在图像中表示透明部分的颜色。


该函数返回一个整数值,表示添加的图像的索引。如果失败,返回值为-1。

下面是一个简单的示例代码,演示如何使用 ImageList_AddMasked 函数:
#include <windows.h>
#include <commctrl.h>

int main() {
    // 初始化 Common Controls
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC = ICC_WIN95_CLASSES; // 或其他需要的标志
    InitCommonControlsEx(&icex);

    // 创建图像列表
    HIMAGELIST himl = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 1, 0);

    // 加载位图资源
    HBITMAP hBitmap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_SAMPLE));

    // 添加图像到图像列表(使用颜色值RGB(255, 0, 255)作为透明颜色)
    int index = ImageList_AddMasked(himl, hBitmap, RGB(255, 0, 255));

    // 如果成功添加图像,可以在使用后销毁位图资源
    if (index != -1) {
        DeleteObject(hBitmap);
    }

    // 在这里,可以使用图像列表(himl)进行绘制等操作

    // 释放图像列表
    ImageList_Destroy(himl);

    return 0;
}

在这个例子中,首先创建了一个图像列表,然后使用 LoadBitmap 函数加载一个位图资源。接着,调用 ImageList_AddMasked 函数将位图添加到图像列表中,并指定 RGB(255, 0, 255) 作为透明颜色。最后,可以在使用完图像列表后调用 ImageList_Destroy 函数释放资源。


转载请注明出处:http://www.zyzy.cn/article/detail/24671/Win32 API/Commctrl.h/ImageList_AddMasked