как нарисовать отключенную иконку

Я наконец дошел до добавления значков в наши выпадающие меню:


На этом изображении вы можете видеть, что все, кроме выделенной строки, в порядке. Выделенная линия в порядке, за исключением значка, который отображается цветом, а не серым.

Я основываю свой код на минималистском подходе:
http://www.codeproject.com/Articles/16529/Simple-Menus-That-Display-Icons-Minimalistic-Appro?msg=4166441#xx4166441xx

По сути, для этого требуется только нарисовать значок, и мне не нужно управлять всеми аспектами пункта меню с помощью пользовательского кода. Довольно изящный.

Это работает для наших целей, кроме случаев выбора отключенного (серого) пункта меню.
Но когда пункт меню выделен серым цветом и выбран, нарисованный значок отображается так, как если бы он был включен. Неправильно. :(

Тем не менее, точно такой же код рисования работает, когда фон выделен / выбран.

Это наводит меня на мысль, что в HDC содержатся некоторые данные, которые должны полностью контролировать вид значка - поскольку следующий код работает при всех условиях, но выбран:

::DrawIconEx(lpdis->hDC, lpdis->rcItem.left+0, lpdis->rcItem.top, pIcon->GetHandle(), pIcon->GetSize().cx, pIcon->GetSize().cy, 0, NULL, DI_NORMAL);

Кто-нибудь знает, какое состояние инкапсулировано в HDC, которое будет контролировать, как функционирует DrawIconEx? Если я смогу воспроизвести состояние HDC во время выбранного чертежа, как было обнаружено при невыбранном чертеже, я смогу сгенерировать серые значки, не прибегая к реализации из 30-50 строк, которая вручную отображает серый значок в памяти.

Ответы на вопрос(1)

Ваш ответ на вопрос