向菜单添加图像






4.17/5 (6投票s)
2002年11月15日

233121

924
向 MenuItem 添加图像
引言
这是一个简单的程序,它将图片加载到菜单控件中。MenuItem控件没有Image属性来加载图像。因此,执行此操作的唯一方法是调用Windows API函数。以下是使用的API函数。所有函数都来自User32.dll。
[DllImport("user32.dll")]
    public static extern IntPtr GetMenu(IntPtr hwnd);
[DllImport("user32.dll")]
    public static extern IntPtr GetSubMenu(IntPtr hMenu,int nPos);
[DllImport("user32.dll")]
    public static extern IntPtr GetMenuItemID(IntPtr hMenu, int nPos);
[DllImport("user32.dll")]
    public static extern int SetMenuItemBitmaps(IntPtr hMenu, IntPtr nPosition, 
        int wFlags, IntPtr hBitmapUnchecked, IntPtr hBitmapChecked);
代码
intptrMenu = GetMenu(this.Handle);
首先,获取当前窗体菜单的指针。
intptrSubMenu = GetSubMenu(intptrMenu, 0);
然后,获取第一个菜单的子菜单列表的指针。
intptrMenuItemID = GetMenuItemID(intptrSubMenu, 0);
在上面的代码中,0是子菜单列表中的第一个MenuItem。因此,获取第一个MenuItem的指针。
intRet = SetMenuItemBitmaps(intptrMenu, intptrMenuItemID, 0 ,intp, intp);
intp是位图的句柄。SetMenuItemBitmaps将图像从句柄设置为MenuItem。因此,当您运行代码时,不会加载任何图像。

然后,当您点击“LoadImage”按钮时,图像将被加载到菜单项中。

玩得开心!
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。
