我终于开始在我们的下拉菜单中添加图标了:
在此图像中,您可以看到除突出显示的行之外的所有内容都可以。除了图标之外,突出显示的行很好,该图标以彩色绘制,而不是灰色。
我的代码基于极简主义的方法:
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行实现手动灰度缩放内存中的图标。
答案 0 :(得分:1)
您可以使用:
DrawState(...)
API函数,带有DSS_DISABLED标志,但我不确定输出的质量。