Windows エクスプローラーのコンテキスト メニューに項目を追加し、背景が透明な BMP 画像をアイコンとして使用する COM シェル拡張機能があります。
私が使用する画像を次の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% にズーム):
これは、ホバー後のアイコン画像です。
2 番目の画像の周りの白い背景に注意してください。
これまでのところ、Google で関連するものを見つけることができませんでした。この迷惑な背景を避けるためにアイコンを設定する他の方法はありますか?