XP 弹出菜单图标突出显示时不透明

XP Popup Menu Icons not Transparent when highlighted

我知道 XP 很旧,但我只需要知道这里的问题。

我看不出有什么方法可以提供带有图标或带掩码的位图之类的弹出菜单,只有位图。 So, if I use a compatible bitmap, it will look transparent when the selection bar is not highlighting it, but when highlighted the entire graphic still shows (with a square button face color around it).

如果我使用带 alpha 的 32 位 DIB,透明项目只会显示黑色(而 Windows 10 可以很好地处理透明度 - 我认为 Vista 和 Win7 也会)。

如果我在DIB中手动将所有A设置为0,它仍然是黑色的(在Win10上,通常颜色显示为白色的图像 - 我本以为它是透明的)。

无论如何,有没有办法向菜单提供图标(因为它有遮罩)或带遮罩的位图,以便 XP 之类的东西可以自动处理它(没有所有者绘制)?

有没有办法强制加载 .ICO 文件为 256 色版本而不是 32 位 RGB/A 版本?我在 .ICO 中没有 24 位 RGB 图形,所以如果它存在的话,也许 XP 会选择它?

我知道 GDI 并非在所有情况下都支持 alpha,但有时会支持,而且 Windows 版本似乎也很重要。

是否有人对此有背景,并且可以判断这是否是 32 位位图的已知 XP 问题?

在 XP 上你必须自定义绘制但不是整个东西,只是 bitmap/icon。

在 Windows 95/NT4 上,正确执行此操作的唯一方法是自定义绘制整个菜单项。 Vista之前的菜单外观只改变了一次,XP中增加了平面菜单,所以自定义绘制一切当然是可能的。

在 Windows 98/2000 前后的某个时间,添加了将 MENUITEMINFO.hbmpItem 设置为 HBMMENU_CALLBACK 的功能。使用 DrawIconEx 或图像列表。

Vista 添加了对 32 位 ARGB 位图的支持。您不应在此处使用回调方法,因为那样会禁用 new visual style.

另请参阅: