件名のテキストコントロールのOutlookコンテキストメニューにメニュー項目を挿入しています。 Here you can find a previous question I had on doing this.コンテキストメニューのメニュー項目イメージ(MENUITEMINFOのhbmpItem)の配置
問題は、Outlook 2010でメニュー項目の画像が妙に配置されていることです。Outlook 2007では、配置が異なっています。 Outlook 2010では、チェックされた画像の位置がメニューアイテムによって空いているように見えます。
これは、私のメニュー項目が以下のコードでどのように見えるかを示しています。画像の左側に大きなスペースがあることに注目してください。
これは、MIML_CHECKMARKSフラグをfMaskに追加し、ビットマップをhbmpUncheckedポインタに追加する方法を示しています。
Dim bmp As Drawing.Bitmap = My.Resources.olContextMenuIcon
bmp.MakeTransparent(bmp.GetPixel(10, 10))
hbitmap = bmp.GetHbitmap
Dim mii As New NativeMethodsEX.MENUITEMINFO
With mii
.cbSize = Marshal.SizeOf(mii)
.fMask = NativeMethodsEX.MIIM.MIIM_BITMAP Or NativeMethodsEX.MIIM.MIIM_STRING Or NativeMethodsEX.MIIM.MIIM_FTYPE Or NativeMethodsEX.MIIM.MIIM_STATE Or NativeMethodsEX.MIIM.MIIM_ID
.wID = WM_APP
.fType = NativeMethodsEX.MFT.MFT_STRING
.dwTypeData = String.Concat("Wrong Position")
.fState = NativeMethodsEX.MFS.MFS_ENABLED
.hbmpItem = hbitmap
End With
If ShowTop Then
NativeMethodsEX.InsertMenuItem(aHwnd, 0, True, mii)
NativeMethodsEX.InsertMenu(aHwnd, 1, NativeMethodsEX.MFT.MFT_BYPOSITION Or NativeMethodsEX.MFT.MFT_SEPARATOR, Nothing, Nothing)
Else
Dim menuItemCount As Integer = NativeMethodsEX.GetMenuItemCount(aHwnd)
NativeMethodsEX.InsertMenu(aHwnd, menuItemCount, NativeMethodsEX.MFT.MFT_BYPOSITION Or NativeMethodsEX.MFT.MFT_SEPARATOR, Nothing, Nothing)
NativeMethodsEX.InsertMenuItem(aHwnd, menuItemCount + 1, True, mii)
End If
NativeMethodsEX.DrawMenuBar(subjectRegionHwnd)
メニューの項目にチェック/チェックを外すためのスペースを予約しないように指示するにはどうすればよいですか?
他のメニュー項目がどのように追加されたかを制御することはできません。確かに、それらは問題の根本にあります。 hbmpItemとab/hbmpUncheckedを使用してビットマップを表示しないで*進む*に進む必要があると思われます。うまくいくかもしれない。 –
はい私はそれが1つの回避策であることに同意します。私はそれを解決し、問題の解決方法を書いていきます。 – darbid