int IContextMenu.QueryContextMenu(Win32API.MenuHandler hMenu, uint iMenu, uint idCmdFirst, uint idCmdLast, CMF_UFlags uFlags)
        {
            InitMenuCommand();

            int id = 0;
            if ((uFlags & (CMF_UFlags.VerbsOnly | CMF_UFlags.DefaultOnly | CMF_UFlags.Noverbs)) == 0 ||
                (uFlags & CMF_UFlags.Explore) != 0)
            {
                //创建子菜单
                Win32API.MenuHandler submenu = Win32API.Win32.CreatePopupMenu();

                //添加菜单名称
                foreach(KeyValuePair<int,IContextMenuCommand> pair in commandDictionary)
                    Win32.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), pair.Value.Name);

                //将子菜单插入到上下文菜单中
                Win32.InsertMenu(hMenu, 1, MF_UFlags.ByPosition | MF_UFlags.Popup, submenu.handle, "扩展工具集(&Y)");

                //为菜单增加图标
                Win32.SetMenuItemBitmaps(hMenu, 1, MF_UFlags.ByPosition, Properties.Resource.Main.GetHbitmap(), Properties.Resource.Main.GetHbitmap());

                foreach (KeyValuePair<int, IContextMenuCommand> pair in commandDictionary)
                {
                    if(pair.Value.HBitmap != IntPtr.Zero)
                        Win32.SetMenuItemBitmaps(submenu, pair.Key, MF_UFlags.ByPosition, pair.Value.HBitmap, pair.Value.HBitmap);
                }
            }
            return id;
        }
        int IContextMenu.QueryContextMenu(Win32API.MenuHandler hMenu, uint iMenu, uint idCmdFirst, uint idCmdLast, CMF_UFlags uFlags)
        {
            int id = 0;
            if ((uFlags & (CMF_UFlags.VerbsOnly | CMF_UFlags.DefaultOnly | CMF_UFlags.Noverbs)) == 0 ||
                (uFlags & CMF_UFlags.Explore) != 0)
            {
                //创建子菜单
                Win32API.MenuHandler submenu = Win32API.Helpers.CreatePopupMenu();
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "删除 .svn(&S)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "删除 Thumbs.db(&T)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "批量重命名(&R)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "批量文本编码格式转换(&E)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "反馈: Dragon.Zhang(&M)");

                //将子菜单插入到上下文菜单中
                Helpers.InsertMenu(hMenu, 1, MF_UFlags.ByPosition | MF_UFlags.Popup, submenu.handle, "扩展工具集(&Y)");

                //为菜单增加图标
                Helpers.SetMenuItemBitmaps(hMenu, 1, MF_UFlags.ByPosition, Properties.Resource.Main.GetHbitmap(), Properties.Resource.Main.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 0, MF_UFlags.ByPosition, Properties.Resource.DeleteFolder.GetHbitmap(), Properties.Resource.DeleteFolder.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 1, MF_UFlags.ByPosition, Properties.Resource.DeleteFile.GetHbitmap(), Properties.Resource.DeleteFile.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 3, MF_UFlags.ByPosition, Properties.Resource.EncodingConvert.GetHbitmap(), Properties.Resource.EncodingConvert.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 4, MF_UFlags.ByPosition, Properties.Resource.MailTo.GetHbitmap(), Properties.Resource.MailTo.GetHbitmap());
            }
            return id;
        }
コード例 #3
0
        int IContextMenu.QueryContextMenu(Win32API.MenuHandler hMenu, uint iMenu, uint idCmdFirst, uint idCmdLast, CMF_UFlags uFlags)
        {
            InitMenuCommand();

            int id = 0;

            if ((uFlags & (CMF_UFlags.VerbsOnly | CMF_UFlags.DefaultOnly | CMF_UFlags.Noverbs)) == 0 ||
                (uFlags & CMF_UFlags.Explore) != 0)
            {
                //创建子菜单
                Win32API.MenuHandler submenu = Win32API.Win32.CreatePopupMenu();

                //添加菜单名称
                foreach (KeyValuePair <int, IContextMenuCommand> pair in commandDictionary)
                {
                    Win32.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), pair.Value.Name);
                }

                //将子菜单插入到上下文菜单中
                Win32.InsertMenu(hMenu, 1, MF_UFlags.ByPosition | MF_UFlags.Popup, submenu.handle, "扩展工具集(&Y)");

                //为菜单增加图标
                Win32.SetMenuItemBitmaps(hMenu, 1, MF_UFlags.ByPosition, Properties.Resource.Main.GetHbitmap(), Properties.Resource.Main.GetHbitmap());

                foreach (KeyValuePair <int, IContextMenuCommand> pair in commandDictionary)
                {
                    if (pair.Value.HBitmap != IntPtr.Zero)
                    {
                        Win32.SetMenuItemBitmaps(submenu, pair.Key, MF_UFlags.ByPosition, pair.Value.HBitmap, pair.Value.HBitmap);
                    }
                }
            }
            return(id);
        }
        int IContextMenu.QueryContextMenu(Win32API.MenuHandler hMenu, uint iMenu, uint idCmdFirst, uint idCmdLast, CMF_UFlags uFlags)
        {
            int id = 0;

            if ((uFlags & (CMF_UFlags.VerbsOnly | CMF_UFlags.DefaultOnly | CMF_UFlags.Noverbs)) == 0 ||
                (uFlags & CMF_UFlags.Explore) != 0)
            {
                //创建子菜单
                Win32API.MenuHandler submenu = Win32API.Helpers.CreatePopupMenu();
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "删除 .svn(&S)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "删除 Thumbs.db(&T)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "批量重命名(&R)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "批量文本编码格式转换(&E)");
                Helpers.AppendMenu(submenu, MF_UFlags.String, new IntPtr(idCmdFirst + id++), "反馈: Dragon.Zhang(&M)");

                //将子菜单插入到上下文菜单中
                Helpers.InsertMenu(hMenu, 1, MF_UFlags.ByPosition | MF_UFlags.Popup, submenu.handle, "扩展工具集(&Y)");

                //为菜单增加图标
                Helpers.SetMenuItemBitmaps(hMenu, 1, MF_UFlags.ByPosition, Properties.Resource.Main.GetHbitmap(), Properties.Resource.Main.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 0, MF_UFlags.ByPosition, Properties.Resource.DeleteFolder.GetHbitmap(), Properties.Resource.DeleteFolder.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 1, MF_UFlags.ByPosition, Properties.Resource.DeleteFile.GetHbitmap(), Properties.Resource.DeleteFile.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 3, MF_UFlags.ByPosition, Properties.Resource.EncodingConvert.GetHbitmap(), Properties.Resource.EncodingConvert.GetHbitmap());
                Helpers.SetMenuItemBitmaps(submenu, 4, MF_UFlags.ByPosition, Properties.Resource.MailTo.GetHbitmap(), Properties.Resource.MailTo.GetHbitmap());
            }
            return(id);
        }