C++:Шаг 1:Экстрактиконекс.Шаг 2:???Шаг 3:SetMenuItemBitmaps ( Сетменюитембит - карты

StackOverflow https://stackoverflow.com/questions/96414

  •  01-07-2019
  •  | 
  •  

Вопрос

Я экспериментирую с добавлением значков в расширение оболочки.У меня есть этот код (очищенный для удобства чтения), который работает:

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 Framework, ни vista) приветствуется.

Это было полезно?

Решение 2

Это работает, хотя цвет задней панели черный, а не прозрачный.

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

Другие советы

Vista имеет надлежащую поддержку значков в меню, для предварительной версии Vista вы должны использовать элементы меню owner draw (MF_OWNERDRAW), если вам нужны настоящие полноцветные значки размером 16x16

Меню в стиле Vista... Стиль Vista + обратный вызов до Vista

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top