Frage

Ich experimentiere mit Icons auf eine Shell-Erweiterung hinzufügen. Ich habe diesen Code (für eine einfache Lesung bereinigt), das funktioniert:

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

Der nächste Schritt ist dieser Code:

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);

Was tun habe ich in den ersetzen? 'S. Versuche, Google dieses Wissen haben viele Tipps gefunden, dass ich nicht zum Laufen zu bringen. Jede Beratung daran, dieses zu arbeiten, vor allem auf älteren Maschinen (zum Beispiel kein .net Framework, kein vista) geschätzt wird.

War es hilfreich?

Lösung 2

Das funktioniert, wenn die Hintergrundfarbe schwarz statt transparent ist.

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

Andere Tipps

Vista richtige Unterstützung für Symbole in Menüs, für Pre Vista müssen Sie Besitzer Menüelemente zeichnen verwenden (MF_OWNERDRAW), wenn Sie echte 16x16 Vollfarb-Symbole

wollen

Vista-Stil Menüs ... Vista style + pre Vista Rückruf

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top