На onCreate ListCtrl создай CImageList и через метод Add добавляешь свой битмап.
Можно ли рисовать используя CDC? Можно.
Если использовать битовую маску можно ли создать иконку 24 бит, если можно то как?
Функция CreateIcon.
Функция CreateIcon создаёт иконку, которая имеет указанный размер, цвета и битовую палитру.
HICON CreateIcon(   
HINSTANCE hInstance,
int nWidth,
int nHeight,
BYTE cPlanes,
BYTE cBitsPixel,
const BYTE* lpbANDbits,
const BYTE* lpbXORbits
);
Параметры
hInstance 
Дескриптор экземпляра модуля, создающего иконку. 
nWidth 
Ширина иконки в пикселях. 
nHeight 
Высота иконки в пикселях. 
cPlanes 
Количество слоёв в битовой маске XOR иконки. 
cBitsPixel 
Количество бит на пиксель в битовой маске XOR иконки. 
lpbANDbits 
Указатель на массив байт, который содержит битовые значения для битовой маски AND иконки. Эта битовая маска описывает чёрно-белую иконку. 
lpbXORbits 
Указатель на массив байт, который содержит битовые значения для битовой маски XOR иконки. Эта битовая маска описывает чёрно-белый или устройство-зависимый битмап. 
Возвращаемое значение
В случае успеха, функция возратит дескриптор иконки.
В случае ошибки, функция вернёт NULL. Для получения более подробной информации о ошибке, можно воспользоваться функцией GetLastError.