Pregunta

Estoy experimentando agregando íconos a una extensión de shell.Tengo este código (desinfectado para facilitar la lectura), que funciona:

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

El siguiente paso es 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);

¿Qué pongo para reemplazar las?Los intentos de buscar en Google este conocimiento han encontrado muchos consejos que no logré hacer funcionar.¿Algún consejo para hacer que esto funcione, especialmente en máquinas más antiguas (p. ej.no se aprecia .net framework, ni vista).

¿Fue útil?

Solución 2

Esto funciona, aunque el color de fondo es negro en lugar de transparente.

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

Otros consejos

Vista tiene soporte adecuado para íconos en menús, para Vista anterior, debe usar elementos de menú de dibujo del propietario (MF_OWNERDRAW) si desea íconos reales a todo color de 16x16

Menús estilo Vista... Estilo Vista+devolución de llamada previa a Vista

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top