ImageList_Create 是 Win32 API 中用于创建图像列表的函数,该函数在 Commctrl.h 头文件中声明。

以下是 ImageList_Create 函数的基本信息:
HIMAGELIST ImageList_Create(
  int      cx,
  int      cy,
  UINT     flags,
  int      cInitial,
  int      cGrow
);

参数说明:
  •  cx:图像的宽度。

  •  cy:图像的高度。

  •  flags:图像列表的标志,可以是以下值的组合:

  - ILC_COLOR:指定图像列表使用一个颜色。
  - ILC_COLOR4:指定图像列表使用 4 位色深。
  - ILC_COLOR8:指定图像列表使用 8 位色深。
  - ILC_COLOR16:指定图像列表使用 16 位色深。
  - ILC_COLOR24:指定图像列表使用 24 位色深。
  - ILC_COLOR32:指定图像列表使用 32 位色深。
  - ILC_MASK:指定图像列表使用遮罩。
  - ILC_MIRROR:对图像列表使用水平镜像。
  - 等等,具体请参考 MSDN 文档。
  •  cInitial:初始图像列表中的图像数量。

  •  cGrow:图像列表中图像数量增长时的增量。


该函数返回一个 HIMAGELIST 句柄,表示新创建的图像列表。如果创建失败,返回值为 NULL。

以下是一个简单的示例代码,演示如何使用 ImageList_Create 函数:
#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);

    if (himl == NULL) {
        MessageBox(NULL, L"ImageList creation failed!", L"Error", MB_ICONERROR);
        return 1;
    }

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

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

    return 0;
}

在这个例子中,使用 ImageList_Create 函数创建了一个 16x16 大小的图像列表,使用 32 位色深,并带有遮罩。然后,可以在使用完图像列表后调用 ImageList_Destroy 函数释放资源。


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