public int QueryContextMenu(
IntPtr hMenu,
uint iMenu,
uint idCmdFirst,
uint idCmdLast,
uint uFlags)
{
......
// Use either InsertMenu or InsertMenuItem to add menu items.
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 + IDM_DISPLAY;
mii.fType = MFT.MFT_STRING;
mii.dwTypeData = this.menuText;
mii.fState = MFS.MFS_ENABLED;
mii.hbmpItem = this.menuBmp;
if (!NativeMethods.InsertMenuItem(hMenu, iMenu, true, ref mii))
{
return Marshal.GetHRForLastWin32Error();
}
......
}
"this.menuBmp" 在该上下文菜单扩展类的构造函数内被初始化:
public FileContextMenuExt()
{
// Load the bitmap for the menu item.
Bitmap bmp = Resources.OK; // A 16x16 bmp added to the Resources of the project.
bmp.MakeTransparent(bmp.GetPixel(0, 0));
this.menuBmp = bmp.GetHbitmap();
}