我正在尝试向外壳扩展添加图标。我有这段代码(为了便于阅读而进行了清理),它的工作原理是:

InsertMenu(hmenu, index, MF_POPUP|MF_BYPOSITION, (UINT)hParentMenu, namestring);

下一步是这段代码:

HICON hIconLarge, hIconSmall;
ICONINFO oIconInfo;
ExtractIconEx("c:\\progra~1\\winzip\\winzip32.exe", 0, &hIconLarge, &hIconSmall, 1);
GetIconInfo(hIconSmall, &oIconInfo);
//???????
SetMenuItemBitmaps(hParentMenu, indexMenu-1, MF_BITMAP | MF_BYPOSITION, hbmp, hbmp);

我用什么来代替?的。我尝试用谷歌搜索这些知识,发现了许多我无法使用的技巧。关于让它工作的任何建议,特别是在旧机器上(例如没有.net框架,没有vista)值得赞赏。

有帮助吗?

解决方案 2

这是可行的,尽管背景颜色是黑色而不是透明的。

GetIconInfo(hIconSmall, &oIconInfo);
SetMenuItemBitmaps(hmenu, uMenuIndex+i+popUpMenuCount-1, MF_BITMAP | MF_BYPOSITION, oIconInfo.hbmColor, oIconInfo.hbmColor);

其他提示

Vista对菜单中的图标有适当的支持,对于Vista之前的版本,如果您想要真正的16x16全彩图标,则必须使用所有者绘制菜单项(MF_OWNERDRAW)

Vista风格的菜单... Vista风格+Vista前回调

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top