Pergunta

Eu estou experimentando com a adição de ícones para uma extensão de shell. Eu tenho esse código (higienizado para facilitar a leitura), que funciona:

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

O próximo passo é este código:

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

O que faço para colocar para substituir o? S. As tentativas para o Google este conhecimento têm encontrado muitas dicas que eu não conseguiu obter trabalho. Qualquer conselhos sobre como tirar isso para trabalho, especialmente em máquinas antigas (enquadramento por exemplo não .net, sem vista) é apreciado.

Foi útil?

Solução 2

Isso funciona, embora a cor de volta é preto em vez de transparente.

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

Outras dicas

Vista tem suporte adequado para ícones em menus, para pré Vista, você deve usar os itens do menu proprietário empate (MF_OWNERDRAW) se você quiser real 16x16 ícones de cores

noreferrer menus estilo de Vista ... Vista estilo + pré Vista callback

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top