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
[email protected]

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)