Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: karmany en 5 Agosto 2006, 14:15 pm



Título: Tutorial: estilo XP en VB6 y VB.net
Publicado por: karmany en 5 Agosto 2006, 14:15 pm
INTRODUCCIÓN
[/size]

Como no lo he visto por ningún lado en el foro, voy a hacer un pequeño tute paso a paso de cómo dar la apariencia visual de Windows XP desde Visual Basic 6.

Lo primero y lógicamente hay que tener instalado Windows XP.

Imaginemos que ya tenemos nuestro Proyecto terminado y estamos a punto de compilar. Si ejecutamos el programa desde VB6 veremos cómo los botones, scrollbar, controles… tienen una apariencia muy clásica y muy distinta de la apariencia de Windows XP:

(http://www.pic2up.net/TDRLU2.jpg)

Para conseguir la apariencia de Windows XP tenemos que seguir estos pasos:

1- Lo primero que hay que hacer es añadir al proyecto la función InitCommonControls() del API de Windows.
Esta función carga previamente en memoria la librería de controles comunes de Windows, Microsoft Windows Common Controls (comctl32.dll).
Yo he probado sin utilizar esta función y el programa me ha funcionado bien, pero hay gente que le da error, así que me quito posibles problemas añadiéndola.
¿Cómo la declaramos?. Poniendo en declaraciones:

Código:
Private Declare Sub InitCommonControls Lib "comctl32" ()

2-Llamar a esta funcion en el inicio del programa desde el evento Initialize del Formulario o desde Sub Main. Si lo pones en el form_load tampoco funcionará. Yo lo hago así:

Código:
Private Sub Form_Initialize()
    InitCommonControls
End Sub

(http://www.pic2up.net/T3RLUe.jpg)

3- Ya podemos compilar nuestro proyecto y generar el ejecutable. Yo lo he llamado: Proyecto1.exe.

4- Ya sólo queda una cosa. Se trata de añadir a nuestra aplicación un recurso con nuestra apariencia XP. Voy a hacerlo muy sencillo y a utilizar un programa gratuito.

Si quieres saber algo más sobre recursos lee mi “tutorial para editar recursos” que es muy interesante:
http://foro.elhacker.net/index.php/topic,134513.0.html

Para hacer esto que he comentado voy a utilizar un programa que es gratuito:
XN Resource Editor. Lo podéis descargar de su página oficial:
http://www.wilsonc.demon.co.uk/d10resourceeditor.htm

Abrimos el XN Resource Editor vamos a File --> Open y seleccionamos nuestro Proyecto1.exe.
Ahora vamos a Resource --> Add resource (Añadir recurso) y seleccionamos
XP Theme Manifest:

(http://www.pic2up.net/TrRLUPc.jpg)

Pulsamos OK y nos tiene que haber aparecido una carpeta con nuestro nuevo XP Theme Manifest:

(http://www.pic2up.net/T5RLUOC.jpg)


Ya lo hemos hecho todo, ahora sólo tenemos que guardarlo con el nombre que queramos. Lo ejecutamos y…

(http://www.pic2up.net/TKRLUPT.jpg)

Ahora ya tenemos el archivo manifest incorporado a nuestra aplicación.

En este punto puede resultar muy curioso y útil poder trabajar en VB6 en modo diseño con estilo XP.
Puedes hacer exactamente todo lo que acabo de explicar: abres el VB6.exe con el XN Resource Editor y sigues los pasos..
Pienso que es la forma más sencilla..
Basado todo en lo mismo, también se puede hacer de esta forma:

Hay que copiar este código XML siguiente en un bloc de notas:

Código:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
    name="Woozle.PEResourceExplorer.XPManifest"
    processorArchitecture="x86"
    version="1.0.0.0"
    type="win32"/>
<description>Windows Shell</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
             type="win32"
             name="Microsoft.Windows.Common-Controls"
             version="6.0.0.0"
             processorArchitecture="x86"
             publicKeyToken="6595b64144ccf1df"
             language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

Y hay que guardarlo con el nombre de la aplicación a la que se va a poner estilo XP + “.manifest”.
En este caso de VB6.exe será: VB6.exe.manifest

Solo queda poner este archivo en el mismo directorio que VB6.exe y arreglado..

CONCLUSIONES:
[/size]
La verdad es que es bastante curioso todo esto. Me resultó extraño que en VB posteriores tampoco estuviera el estilo XP, así que preguntando me dijeron que el VB 2005 tenía ya este estilo. Lo probé y es cierto.

Todo esto explicado es para VB6, pero y para VB.NET ¿¿cómo se hace??
Lo he visto muy bien explicado en esta página así que os doy el enlace. Vale tanto para VB.NET como C#:

http://www.elguille.info/NET/dotnet/temasXP.htm

Espero os resulte útil toda esta información..
Un saludo de karmany.



Título: Re: Tutorial: estilo XP en VB6 y VB.net
Publicado por: andoba en 5 Agosto 2006, 22:59 pm
Sticky plz. Buenisimo.


Título: Re: Tutorial: estilo XP en VB6 y VB.net
Publicado por: rob1104 en 6 Agosto 2006, 05:28 am
wow excelente, nunca se me hubiera ocurrido... salu2


Título: Re: Tutorial: estilo XP en VB6 y VB.net
Publicado por: Grimble Grumble en 6 Agosto 2006, 09:15 am
Muy buena idea la del tutorial !! Ahora, yo tengo una duda, ya que he usado un ocx q cumple con la misma funcion, pero en el caso q el usuario este usando la apariencia comun ("Windows estilo clasico") ¿Hay forma de desactivarlo? Porq en mi caso queda el ocx funcionando y la apariencia es cualquiera... ya q quedan los botones de XP en el estilo clasico... Espero haberme explicado con claridad...

Saludos !


Título: Re: Tutorial: estilo XP en VB6 y VB.net
Publicado por: crashx13x en 9 Agosto 2006, 19:08 pm
wapo wapo wapo bravo


Título: Re: Tutorial: estilo XP en VB6 y VB.net
Publicado por: Nakp en 1 Septiembre 2006, 03:06 am
ps... q lastima.. :-( a mi me aparece cuando ejecuto el programa q la clase no se encuentra... damn it! como lo soluciono compa?

salu2