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.
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