首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >插入菜单/附件菜单-如何使用C++和win32将图标添加到菜单和子菜单

插入菜单/附件菜单-如何使用C++和win32将图标添加到菜单和子菜单
EN

Stack Overflow用户
提问于 2012-04-17 04:16:53
回答 2查看 8.6K关注 0票数 4

我用C++和win32编程写了一个外壳扩展动态链接库上下文菜单程序。开发环境为Visual Studio 2008和2010。在下面的示例代码中,我尝试仅为主菜单添加菜单图标。主菜单未显示菜单图标。(我需要为所有菜单项添加图标。)

请更正以下代码。

代码语言:javascript
运行
复制
QueryContextMenu(HMENU hmenu, UINT /*uInd*/, UINT idCmdFirst, UINT /*idCmdLast*/, UINT /*uFlags*/ )
{


    int id = 1;

    HBITMAP hBitmap = NULL;

    hBitmap = (HBITMAP)LoadImage((HMODULE)_AtlBaseModule.m_hInst,MAKEINTRESOURCE(IDB_MYBITMAP), IMAGE_BITMAP, 12, 12, 0);


    HMENU submenu = CreatePopupMenu();

    AppendMenu(submenu, MF_STRING|MF_ENABLED, uidCmdFirst + id++, L"XP");
    AppendMenu(submenu, MF_STRING|MF_ENABLED,uidCmdFirst + id++, L"VISTA");
    AppendMenu(submenu, MF_STRING|MF_ENABLED,uidCmdFirst + id++, L"Win 7");

    InsertMenu(hmenu, 4,MF_BYPOSITION|MF_POPUP, UINT(submenu), L"Windows");
    SetMenuItemBitmaps(hmenu,id++, MF_BITMAP, hBitmap,hBitmap);


    return id;
}
EN

回答 2

Stack Overflow用户

发布于 2013-04-26 19:28:46

CreatePopUpMenu也可以工作。您只需要使用InsertMenu而不是AppendMenu。

票数 1
EN

Stack Overflow用户

发布于 2018-08-15 08:29:56

在阅读SetMenuItemBitmap https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setmenuitembitmaps的定义时,并没有MF_BITMAP标志这样的东西。

选项包括MF_BYCOMMAND和MF_BYPOSITION。看起来您正在尝试使用MF_BYCOMMAND,但必须使用已经赋予MenuItens的相同值。

您还必须检查位图的格式。SetMenuItemBitmaps只接受单色。我在谷歌上也做了同样的事情,并在这里取得了成功。谢谢你为我指路。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10181063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档