簡體   English   中英

如何在C#的Windows Shell上下文菜單中創建子菜單?

[英]How to create a sub-menu in the Windows shell context menu in C#?

我正在使用pInvokeIShellExtInitIContextMenu將上下文菜單添加到C#中的資源管理器外殼中。

我可以使用以下代碼將單個項目添加到上下文菜單:

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,....)

但是子菜單始終為零值。

誰能幫我?

我想您的意思是您要彈出一個級聯子菜單?

您需要使用:

  • CreatePopupMenu()創建一個新菜單
  • 在菜單中添加/插入菜單項
  • 然后使用MENUITEMINFO ,將.hSubMenu設置為菜單的句柄,然后使用MIIM_SUBMENU | MIIM_TYPE MIIM_SUBMENU | MIIM_TYPE掩碼,要插入到上下文菜單中,可以通過IContextMenu:QueryContextMenu

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM