Este es un módulo clase que sirve para insertar imágenes en el menú, a diferencia del control de usuario HookMenu, este sólo requiere un simple módulo, quizás no cuente con una interfaz sencilla para insertar las imágenes ya que con este módulo tendremos que hacerlo mediante código.
Lo que intenté preservar es que el ícono no modifique el estilo visual de Windows, es decir, el menú no tendrá el aspecto de Office o Ribbon.
También cuenta con la posibilidad de agregarle imágenes a la barra de menú y a los menúes creados mediante Apis (CreatePopupMenu).
La clase soporta imágenes .png, .ico y todos los formatos estándar de imágenes. Este módulo sólo funcionará en Windows XP y posteriores, ya que las versiones anteriores no cuentan con GDI Plus.
En Windows XP el módulo necesita subclasificar la ventana que contiene o llama al menú, pero en Windows Vista y Windows 7 esto no es necesario ya que corrigieron el error que tenían los menúes con bitmaps.
Nótese que en Windows Vista y Windows 7 se mantienen los estilos visuales de Windows.
Hola, antes que nada gracias por tu trabajo… llevo mucho tiempo usando otra herramienta para generar este tipo de menúes y no funciona en Windows 11 (al menos de momento, tampoco funcionaba en las primeras versiones de Windows 10 hasta que una actualización del sistema operativo lo corrigió), mientras que la tuya lo hace sin problemas, además de que respeta el aspecto nativo de los menús de la versión de sistema operativo que se esté ejecutando.
Ahora, tengo el problema de que uso menúes contextuales generados a partir de menúes comunes que están ocultos… y por lo que pude comprobar, si el menú tiene su propiedad visible seteada a False, no muestra íconos al llamarlo como menú contextual.
¿La única solución en ese caso es crear los menúes mediante APIs?
Hola Jota, si para los pop menú tienes que crear el menú con Apis si le quieres poner iconos, mirate este modulo te va a facilitar todo
http://leandroascierto.com/blog/clase-para-popup-menu/
¡Gracias!
Encontré una solución creativa igualmente funcional y más sencilla de implementar en mi proyecto:
1. Coloqué todos los menús contextuales como submenús de un menú de nivel primario
2. Le puse a ese menú como Caption un espacio en blanco
3. Le setee la propiedad Enabled a False
4. Lo puse como último menú
De ese modo, el menú no aparece en la interfaz (el resultado es el mismo que setear su propiedad visible a False, pero sin perder los íconos)
Es importante que sea el último menú, de otro modo al moverse por los menús se nota su presencia, aunque esté inhabilitado.
Lo dejo aquí por si le sirve a otra persona.
On form 3, how to add submenu with icon?