Temas de XP
Como usar los temas de XP en VisualBasic

 

Fecha: 07-Enero-2002
Publicado: 08/Ene/2002 (actualizado link: 16/Ago/2005)
Autor: Víctor Sánchez http://www.victor.eu.org


Después de muchos años esperando que Windows soportase la inclusión de Skins, Microsoft ha incluido esto en Windows XP, pero no creáis que la cosa es tan buena y sencilla, por desgracia, para los programas de Visual Basic el cambio no es trivial pero por suerte no es imposible.

Para la mayoría de las aplicaciones llegará con incluir un simple fichero. Tomemos como ejemplo el Mirc, para hacer que soporte los estilos de XP tendremos que crear un fichero llamado en el mismo directorio de la aplicación un fichero llamado Mirc.exe.manifest con el siguiente contenido:
 


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="x86"
    name="YourCompanyName.YourDivision.YourApp"
    type="win32"
/>
<description>Your app description here</description>
<dependency>
    <dependentAssembly>
       <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="X86"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
    </dependentAssembly>
</dependency>
</assembly>


Si abrimos el Mirc veremos que la pantalla de configuración ahora tiene el aspecto del tema que tengáis activo actualmente.

Esto funciona con la mayoría de los programas, excepto algunos pocos que pueden fallar, por desgracia los que están hechos con Visual Basic entran en ese grupo.

Para que un programa de VB funcione además de añadir un fichero .mainfest como el anterior habrá que añadir la siguiente llamada en la función Main de vuestro proyecto antes de nada.
 


‘ Esto se añadirá en las declaraciones
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()


Sub Main()
    InitCommonControls

    Msgbox “Este mensaje ya usa temas”, vbinformation
End Sub


Si compilamos la aplicación podremos comprobar que ya se usan los temas de XP.

En algunas aplicaciones veréis que la barra de herramientas, las pestañas, y en general todos los Windows Common Controls 6.0 se siguen viendo con el estilo clásico de Windows, por el momento la única solución conocida es usar los Windows Common Controls 5.0 o cualquier otro control basado en la COMCTL32.DLL

En el código de ejemplo se puede comprobar como funciona el programa. El ejemplo es totalmente funcional, pero tiene la limitación de que es necesario distribuir con la aplicación a mayores el fichero .manifest

En las aplicaciones de C es posible incluir este código en un fichero de recursos con el tipo 24 y el ID 1, pero si se hace con una aplicación VisualBasic está no se puede ejecutar en Windows XP, por lo que será necesario distribuir siempre el fichero .manifest con nuestra aplicación…

Para que podáis comprobar el antes y el después hice este par de capturas en un Windows XP usando un skin que simula a Aqua.

Sin los temas aplicados Con los temas aplicados




Esto es todo!!

Víctor Sánchez
vsanchez@mail.com

Notas del Guille:
Para que esto funcione, se necesita la librería de diálogos comunes comctl32.dll versión 6 y ésta es una DLL incluida con Windows XP que no se puede distribuir, por tanto sólo funcionará en equipos con el Windows XP.

Tener los temas de Windows XP en tiempo de diseño:
Si quieres que el Visual Basic muestre los temas de Windows XP en tiempo de diseño, en el directorio del ejecutable (donde esté el VB6.exe), copiate el "manifest" mostrado al principio de este artículo y llámalo: vb6.exe.manifest, desde que lo hagas, tendrás los temas de Windows XP en tiempo de diseño.
Pero para que tu ejecutable los tenga "realmente", deberás seguir los pasos indicados por Víctor.

Nota: Esto también es válido para el VB5 (con el VB4 no lo he probado), simplemente cambia el nombre del .manifest, que siempre tendrá el formato: NombreEjecutable.manifest (p.e. vb5.exe.manifest)

Nota del 12/Oct/02: Pulsa este link si quieres saber algunas cosillas a tener en cuenta o cómo usarlos en Visual Basic .NET


ir al índice

Fichero con el código de ejemplo (myTheme.zip - 7 KB)