Torna al Thread
int IContextMenu.QueryContextMenu(uint hmenu,
uint iMenu,
int idCmdFirst,
int idCmdLast,
uint uFlags)
{
//Ottiene il file cliccato
StringBuilder sb = new StringBuilder(1024);
DllImports.DragQueryFile(m_hDrop, 0, sb, sb.Capacity + 1);
//Se è un collegamento (*.lnk) termina
//Probabilmente l'errore è qui ma non so cosa fare!!
if (new FileInfo(sb.ToString()).Extension == ".lnk") { return 1; }
// Add it to the item
for (int i = 0; i < Menus.Length; i++)
{
//Aggiorna l'ID del menu
Menus[i].MenuItemInfo.wID += idCmdFirst;
//Verifica se questo menu ha dei sottomenu
if (Menus[i].SubMenu != null) { PopolateSubMenu(Menus[i], idCmdFirst); }
//Aggiunge il menu
DllImports.InsertMenuItem(hmenu, Menus[i].Position - 1, 1, ref Menus[i].MenuItemInfo);
//Aggiunge l'icona
if (Menus[i].Image != null) {
System.Drawing.Bitmap Bmp = Menus[i].Image;
DllImports.SetMenuItemBitmaps((IntPtr)hmenu, (IntPtr)(Menus[i].Position - 1), 0x400, Bmp.GetHbitmap(), Bmp.GetHbitmap());
}
}
// Return the new id number if we actually added an item
return (int)(NumeroMenu + 1);
}