1

を使用して、pInvokeC #のエクスプローラーシェルにコンテキストメニューを追加しています。IShellExtInitIContextMenu

次のコードを使用して、コンテキストメニューに単一の項目を追加できます。

MENUITEMINFO mii = new MENUITEMINFO();
mii.cbSize = (uint)Marshal.SizeOf(mii);
mii.fMask = MIIM.MIIM_BITMAP | MIIM.MIIM_STRING | MIIM.MIIM_FTYPE | MIIM.MIIM_ID | MIIM.MIIM_STATE ;
mii.wID = idCmdFirst + increment;
mii.fType = MFT.MFT_STRING;
mii.dwTypeData = contextMenuItem.ItemText;
mii.fState = MFS.MFS_ENABLED;
mii.hbmpItem = this._pMenuBitmap;

NativeMethods.InsertMenuItem(hMenu, increment, true, ref mii)

私がやりたいのはメニューツリーを追加することです。つまり、新しく作成されたメニュー項目にサブメニューを追加します。私の最初の本能は使用することでした:

var subMenu = mii.hSubMenu;
...
NativeMethods.InsertMenuItem(subMenu,....)

ただし、サブメニューは常にゼロ値です。

誰か助けてもらえますか?

4

1 に答える 1

1

飛び出すカスケードサブメニューが欲しいということですか?

使用する必要があります:

  • CreatePopupMenu()新しいメニューを作成するには
  • メニュー項目を追加/挿入します
  • 次に、をメニューのハンドルにMENUITEMINFO設定した場所を使用し、マスクを使用して、を介して取得したコンテキストメニューに挿入します。.hSubMenuMIIM_SUBMENU | MIIM_TYPEIContextMenu:QueryContextMenu

http://forum.cockos.com/archive/index.php/t-20799.html

于 2012-08-25T14:26:06.097 に答える