我终于开始向下拉菜单添加图标了:
In this image, you can see that everything but the highlighted line is okay. The highlighted line is fine except for the icon, which is drawn in color, instead of grayed.
我的代码基于极简主义方法:
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 行实现。