7

我有一个 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%):

这是悬停后的图标图像:

注意第二张图片周围的白色背景!

到目前为止,我还没有在谷歌上找到任何相关的东西。是否有其他方法可以设置图标以避免这种烦人的背景?

4

0 回答 0