Win32:Does ImageList_ReplaceIcon 因不正确 ImageList_Create 而失败

Win32:Does ImageList_ReplaceIcon failed with unproper ImageList_Create

正如标题所说,我正在尝试编写一个简单的 window 程序,但是当我尝试更改我的 TreeView 的图标时,它出错了。我很确定我的图标已加载,因为我这样做了:

HICON hIcon;
//hinst is my global variable
hIcon = LoadIcon(hinst,(char*)IDI_ICON_MAIN);
if (hIcon == NULL)
{
    MessageBox(NULL, "LoadIcon failed", "error", MB_OK);
}

它工作正常然后我使用 ImageList_ReplaceIcon():

if (ImageList_ReplaceIcon(iml, 3, hIcon) == -1)
{
    MessageBox(NULL, "replace icon failed", "error", MB_OK);
}
TreeView_SetImageList(hwndTV, iml, TVSIL_STATE);

首先我想,可能是因为我在ImageList_Create()中输入了错误的ILC_COLOR,然后我重新检查了我的图标位,然后重新设置了参数,但仍然没有用。

任何人都可以告诉我一些问题的线索吗?我已经检查过 Google 并多次阅读文档,也许我错过了什么?

更新 [2022/05/31]

这是我的 TreeView:

我正在尝试将我的图标更改为红色圆圈。

我现在可以看到我的图标了,谢谢。感谢那些给我建议的人。

ReplaceIcon() 只能在我已经添加了图标的情况下使用。如果其中没有图标,那么我唯一可以使用的条件是将索引设置为 -1,以便 ReplaceIcon() 可以为我添加图标。