In Visual C++ App, disabled toolbar buttons show as solid grey boxes

I have a VC++ app created using VS2012.  In said app, I have a few toolbars.  When the toolbar images are enabled, the images on each toolbar button display nicely.  However, when a toolbar button is disabled (intentionally), the image(s) on the toolbar buttons display as a solid grey boxes, instead of as a greyed out (disabled) version of the original image.

Here's some more detail:

I am loading the images at run-time by using the following:

CToolBarCtrl& bar = m_wndMyToolBar.GetToolBarCtrl();      
CImageList *pList = bar.GetImageList();      

HICON hIconSomeImage = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SOME_ENABLED_ICON));      
pList->Replace(0, hIconSomeImage);       

This code works well to get the image to display when the toolbar button is enabled.

To solve the issue of the image being a solid grey box when the toolbar button is disabled, I tried creating an image list for disabled toolbar images, as follows:

CImageList m_imgListDisabled;
imgListDisabled.Create(16, 15, ILC_COLOR32, 8, 8);


The above code compiles, and runs without throwing any errors, yet the net result is a solid grey box instead of the disabled image.

I should add that the images I am using for the toolbar buttons are icon files (.ico files), and these icons have a high color depth.

Any help would be greatly appreciated.
Who is Participating?
sarabandeConnect With a Mentor Commented:
CImageList m_imgListDisabled;
from your code snippet it looks like the m_imgListDisabled is a local variable (and not a member). if that is the case the object will be freed after scope and the pointer to the disabled image list was invalid as well. either make it a static variable or a member to solve the issue.

cjm20Author Commented:
Bingo!  Moving the image list to the member level fixed my issue. I can now see the correct disabled icon when i would expect to. Thanks very much, Sara!
cjm20Author Commented:
My kind of solution: nice and simple :)
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.