Я наконец-то дошел до добавления значков в наши выпадающие меню:
На этом изображении вы можете видеть, что все, кроме выделенной линии, в порядке.Выделенная линия в порядке, за исключением значка, который нарисован в цвете, а не в сером цвете.
Я основываю свой код на минималистском подходе:
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 строк, которая вручную отображает серый значок в памяти.