我有一个 COM shell 扩展,它将一个项目添加到 Windows 资源管理器上下文菜单中,并使用具有透明背景的 BMP 图像作为图标。
要设置我使用的图像,SetMenuItemBitmaps
如下所示:
[DllImport("user32.dll", ExactSpelling = true)]
internal static extern int SetMenuItemBitmaps(IntPtr hMenu,uint uPosition,uint uFlags,IntPtr hBitmapUnchecked,IntPtr hBitmapChecked);
SetMenuItemBitmaps(owner.hMenu,(uint)pos,Win32.MF_BYPOSITION,bitmap.GetHbitmap(),IntPtr.Zero);
我的问题是 - 当图标第一次出现时它看起来不错,但在将鼠标悬停在其上方后,图标的背景变为白色(而不是透明)并保持白色,直到我重新打开菜单。
我已经尝试在参数“hBitmapUnchecked”、“hBitmapChecked”中设置两个非默认值 - 但它似乎没有任何区别。结果保持不变。
这是悬停前的图标图像(放大到 400%):
这是悬停后的图标图像:
注意第二张图片周围的白色背景!
到目前为止,我还没有在谷歌上找到任何相关的东西。是否有其他方法可以设置图标以避免这种烦人的背景?