Load the PNG with CreateIconFromResourceEx then add that icon to your imagelist.
HICON LoadIconPNG(LPCTSTR lpFileName, INT nWidth, INT nHeight)
{
HICON hIcon = NULL;
HANDLE hFile;
DWORD dwsz, dwbr;
BYTE *pb;
if ((hFile = CreateFile(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE) return (NULL);
dwsz = GetFileSize(hFile, NULL);
pb = (BYTE *) malloc(sizeof(BYTE) * dwsz);
if (!ReadFile(hFile, pb, dwsz, &dwbr, NULL)) { free(pb); CloseHandle(hFile); return (NULL); }
CloseHandle(hFile);
hIcon = CreateIconFromResourceEx(pb, dwsz, TRUE, 0x00030000, 0, 0, LR_DEFAULTCOLOR);
free(pb);
return (hIcon);
}