in general, you may create a bmp first, using Resource Editor.
Then, you will derive a class from CListCtrl, in your class, you will define a CImageList, for example, CImageList m_image, then create the image list using CImageList::LoadImage.
then, you will set the image list to the CListCtrl using CListCtrl::SetImageList.
for the column header:
you can add the image when you insert a column using CListCtrl::InsertColumn.
And please refer to iImage member of LVCOLUMN struct.
for items in ListView:
you can easily add one image for each item(not sub items) when you insert an item into the ListView using CListCtrl::InsertItem.
And please refer to iImage member of LVITEM struct. Maybe, you can add one image for each item and sub items using this method. But, I haven't tested it yet. And if it doesn't work for sub items, you may specify the OWNER-DRAW style for CListView, and then you can draw it yourself.
for ListBox, you may specify the OWNER-DRAW style, and then you can draw it yourself in CListBox::DrawItem. It is very easy. hehe. And try...