Jul 102011
 

Módulo clase para agregar imágenes en controles OptionButton, CheckBox, CommandButton y Frame cuando se encuentran los Temas de Windows corriendo en la aplicación (Manifest), esta clase la había creado hace un tiempo atrás, la cual está publicada en Recursos Visual Basic donde la clase podía poner varios iconos para cada estado del botón (MousOver, MouseDown y deshabilitado). En esta versión se quitó dicha propiedad ya que no lo considero muy útil, también eliminé otra propiedad la cual si no estaban los Themes habilitados ponía una imagen de todas formas, una de las ventajas de esta versión es que no se necesita una clase para cada control, ya que con una podemos cubrir todos los controles del formulario o la aplicación, otra es que se puede poner cualquier tipo de imagen  (PNG, JPG, BMP e ICO) y la lectura de las imágenes en varias formas.

Detalle de sus funciones:

  • SetImageFromHandle:  Agrega la imágen desde su handle (Bitmap o Icono).
  • SetGdiPlusImagen: Agrega la imágen desde un hBitmap de GDI+.
  • LoadImageFromFile: Carga una imágen desde un archivo.
  • LoadImageFromRes: Carga una imágen desde el archivo de recurso.
  • LoadImageFromStream: Carga una imágen desde un array de bits.
  • SetMargins: Indica los márgenes de la imágen con respecto al control (Left, Top, Right, Bottom).
  • Align: Propiedad para poner u obtener la alineación de la imágen con respecto al control (Icon_Left, Icon_Right, Icon_Top, Icon_Bottom, Icon_Bottom, Icon_Center).
  • RemoveImage: Remueve la imágen del control.

La fórmula principal de dicho módulo es asociar un ImageList (API) con un ícono al control utilizando SendMessage con el mensaje BCM_SETIMAGELIST y la estructuraBUTTON_IMAGELIST el resto del código solo trata de formar las imágenes en objetos Iconos.

Nota: Cuando prueben el proyecto si están en el IDE seguramente no van a ver ningún icono, ya que no funciona si no está compilado (excepto que tengan el VB6 con Manifest) así que sólo van a ver su funcionamiento cuando corran el ejecutable (recalco para los que no están al tanto, la clase sólo funciona si se utilizan los temas de Windows, para más información ver este link).

Iconos en botones