Step 1: Set up the overlay imagesThe image list has to be set up with the overlay images by calling the function SetOverlayImage(). Upto four images can be added to the list of overlay images. Call this function for the image list object associated with the tree view control for the item images. We can call this function before we associate the image list with the tree view control or after it does not matter. Normally this code would be clubbed with the code where you create the image list and associate it with the tree view control.
The SetOverlayImage() takes two arguments. The first argument is the index of the image within the image list that you want to use as an overlay mask. If you want the third image in the list to be an overlay mask then this value would be 2 and if you want the tenth image, this value would be 9.
The second argument is the one-based index of the overlay mask. This argument can have a value of 1 to 4 inclusive. This serves as the identifier for the overlay mask. If you are using only one image as an overlay mask, you can choose any of the four index it need not be one necessarily. Also, if you call SetOverlayImage() for two different images with the same overlay mask index then the latter call will supercede the previous call.
m_tree.m_image.SetOverlayImage(15, 1 ); m_tree.m_image.SetOverlayImage(16, 2 ); m_tree.m_image.SetOverlayImage(18, 3 ); m_tree.m_image.SetOverlayImage(20, 4 );
Step 2: Set the item state to use the overlay maskYou can specify the overlay mask when inserting a new item or you can specify it later by calling SetItemState(). We actually use to the macro INDEXTOOVERLAYMASK() to specify the overlay mask index.
// Use third overlay mask SetItemState( hItem, INDEXTOOVERLAYMASK(3), TVIS_OVERLAYMASK ); // Remove overlay mask by using index zero. SetItemState( hti, INDEXTOOVERLAYMASK(0), TVIS_OVERLAYMASK );