繁体   English   中英

C ++:第1步:ExtractIconEx。 第2步: ??? 第3步:SetMenuItemBitmaps

[英]C++: Step 1: ExtractIconEx. Step 2: ??? Step 3: SetMenuItemBitmaps

我正在尝试向shell扩展添加图标。 我有这个代码(清理易于阅读),它的工作原理如下:

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框架,没有远景)都值得赞赏。

这是有效的,虽然背面颜色是黑色而不是透明。

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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM