向菜单添加图像






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”按钮时,图像将被加载到菜单项中。
玩得开心!
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。