Domanda

Sto sperimentando l'aggiunta di icone a un'estensione della shell.Ho questo codice (igienizzato per una facile lettura), che funziona:

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

Il prossimo passo è questo codice:

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

Cosa devo inserire per sostituire i ?.I tentativi di cercare su Google questa conoscenza hanno trovato molti suggerimenti che non sono riuscito a far funzionare.Qualche consiglio su come farlo funzionare, specialmente su macchine più vecchie (ad es.nessun framework .net, nessun Vista) è apprezzato.

È stato utile?

Soluzione 2

Funziona, anche se il colore del retro è nero anziché trasparente.

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

Altri suggerimenti

Vista dispone del supporto adeguato per le icone nei menu, per le versioni precedenti a Vista è necessario utilizzare le voci del menu di disegno del proprietario (MF_OWNERDRAW) se si desiderano icone reali a colori 16x16

Menu in stile Vista... Stile Vista+richiamata pre Vista

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top