65.9K
CodeProject 正在变化。 阅读更多。
Home

向菜单添加图像

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (6投票s)

2002年11月15日

viewsIcon

233121

downloadIcon

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”按钮时,图像将被加载到菜单项中。

玩得开心!

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.