Autor Tema: Xp Styles sin crear ficheros .manifest  (Leído 5371 veces)

0 Usuarios y 1 Visitante están viendo este tema.

sicario

  • Visitante
Xp Styles sin crear ficheros .manifest
« : febrero 07, 2006, 01:46:28 pm »
Otra vez, vengo con problemas que a mi capacidad no puedo resolver. Espero me ayuden.

Resulta ser que a mi aplicacioncilla, le kiero dar el aspecto de xp por defecto y para eso lo unico que he podido hacer es pegarle al .exe el fichero manifest, pero eso me obliga a andar lidiando con el maldito manifest y eso no lo soporto. Como puedo hacer para que mi aplicación reconosca los Xp Themes automaticamente sin el Manifest?.

De antemano Gracias.

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Xp Styles sin crear ficheros .manifest
« Respuesta #1 : febrero 07, 2006, 02:06:16 pm »
no dijistes que estabas trabajando con visual .net 2005 ??? , si estas trabajando con el .net 2005 automaticamente tus nuevos proyectos son creados con soporte para xp styles.

si estas trabajando con el .net 2003 no hay otra manera que no sea lidiando con los manifest.

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2171
Re: Xp Styles sin crear ficheros .manifest
« Respuesta #2 : febrero 07, 2006, 02:12:30 pm »
Pues en contrariedad a lo que dijo don rdoggsv leyendo por ahi me contre con esto:

Citar
Temas XP para Visual Studio .NET 2003 (.NET Framework 1.1)
(sin crear ficheros .manifest ni modificar los recursos)

Pues que mirando otras cosillas del Visual Studio .NET 2003 (el que usa el .NET Framework 1.1), me encontré con un método de la clase Application que permite indicarle al .NET de que utilice los temas de Windows XP en las aplicaciones creadas con el .NET Framework 1.1 sin necesidad de crear un fichero .manifest.

Te voy a explicar como si fuese un FAQ... a ver si así lo entiendes a la primera... (es que hoy ma dao por ahí)

¿Cómo se consigue usar los estilos XP sin usar un fichero .manifest?
Esto se consigue llamando al método EnableVisualStyles de la clase Application.

¿Dónde hay que hacer esa asignación?
Esa asignación hay que hacerla al principio del método Sub Main, antes del Application.Run(New nombreFormulario).
Que, por otra parte, es lo que se suele hacer en cualquier aplicación de .NET, aunque nosotros no lo hagamos...

Si nosotros no escribimos ese código... ¿quién lo escribe por nosotros?
Bueno, debo aclarar que sólo los que usemos Visual Basic .NET no tenemos que escribir ese código del Sub Main en las aplicaciones de Windows, ya que es el propio IDE de Visual Studio .NET el que lo hace por nosotros.
Si programas con C#, ese código lo verás, ya que el Visual Studio .NET lo incorpora en los nuevos proyectos de C#, pero para los programadores de Visual Basic, el VS lo oculta, será para que no nos liemos... o porque nos consideran más "torpes"... en fin...

Pero... si quiero incluir esa línea para que use los temas de XP... ¿cómo "puñetas" lo hago?
Pues... escribiendo ese procedimiento por tu cuenta...

Vale, muy bien, pero... ¿cómo escribo ese código?
Ah, aquí quería yo llegar... je, je, ¿comprendes ahora porqué se nos considera más "torpes"...? (es broma)
El VS.NET no oculta el procedimiento Main a los programadores de Visual Basic .NET, (ya que realmente no está en ningún lado del código), lo que hace es añadirlo al ejecutable, pero si lo escribimos nosotros, el VS lo respeta y lo deja, (además de usarlo para iniciar la aplicación).
El código lo puedes escribir en cualquier parte de la "clase" del formulario.

¡Ah!, que lo que quieres es que te muestre el código del procedimiento Main... ¡pues haberlo dicho antes!
Aquí tienes uno que se usaría para iniciar un formulario llamado Form1:

    <STAThread()> _
    Public Shared Sub Main()
        ' habilitar los estilos XP sin necesidad de crear un .manifest
        ' para que sea efectivo, en los controles que tengan la propiedad
        ' FlatStyle, debe asignarse el valor System
        ' (por defecto tienen el valor: Standard)
        Application.EnableVisualStyles()
        Application.Run(New Form1)
    End Sub

Como habrás podido adivinar, (si has leído los comentarios), no sólo basta con añadir esa llamada al método EnableVisualStyles, sino que además hay que cambiar el valor de la propiedad FlatStyle (de los controles que la tengan, como por ejemplo las etiquetas y botones), y asignarle el valor FlatStyle.System.

Este link de la ayuda de Visual Studio .NET 2003 te dará más información sobre el método EnableVisualStyles:
ms-help://MS.MSDNQTR.2003FEB.3082/cpref/html/frlrfSystemWindowsFormsApplicationClassEnableVisualStylesTopic.htm

¿Puedo automatizar el cambio del valor de la propiedad FlatStyle?
Si no quieres cambiar manualmente el valor de FlatStyle, (que por defecto es Standard), a System, puedes hacerlo automáticamente... Eso es lo que hace precisamente el código de mi clase CambiarEstiloXP mostrado más abajo, (este es el link del código para VB y este otro es el código para C#)

Bueno... aparte del cachondeo... espero que ahora tengas más claro cómo poder usar los estilos XP en tus aplicaciones, ya sean de Visual Basic clásico como de .NET (en cualquiera de sus versiones).

Por supuesto, como ya he dicho, esto también funciona para C#. El código para C# del procedimiento Main quedaría así:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }

En C++ (creo) no se usa el procedimiento Main de la misma forma que en VB y C#, por tanto podemos llamar a EnableVisualStyles en el constructor de la clase, algo así:

    Form1(void)
    {
        Application::EnableVisualStyles();
        InitializeComponent();
    }

Por supuesto, en los proyectos de Visual Basic .NET y de C# también podemos llamar al método que habilita los "estilos visuales" en el constructor del formulario. En el caso de Visual Basic, habrá que hacerlo justo después de la llamada al constructor de la clase base (MyBase.New)

Seguramente te preguntarás que si se puede hacer en el constructor (que siempre está incluido en el código) ¿por qué he dicho que habría que hacerlo en el método Main? Pues, porque eso es lo que la documentación muestra en los ejemplos... y como yo me fío de lo que dice la documentación, (o casi), pues... pero al probar el código para C++ y tener que incluirlo en el constructor, (ya que el ejemplo de la documentación usa un método main, pero no funciona... ¡para que te fíes de la documentación!), pues lo probé con el VB y también funcionó... así que... pues eso...
Indagando un poco en los ficheros incluidos en el proyecto de C++, he visto que el procedimiento main realmente se llama APIENTRY _tWinMain y se incluye en el fichero Form1.cpp... es que... esto del C++ definitivamente no es lo mío... y eso que con el Visual Studio .NET 2003 la cosa es más fácil...

Para mayor informacion podes visitar esta pagina:
Código: [Seleccionar]
http://www.elguille.info/NET/dotnet/temasXP.htm#temasXP2003

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

sicario

  • Visitante
Re: Xp Styles sin crear ficheros .manifest
« Respuesta #3 : febrero 07, 2006, 02:18:10 pm »
Estoy utilizando vb.net 2005 per cuando compilo, se visualizan los formularios de manera normal y no como los necesito que cuando agarran foco se ve el entorno como de color naranja.

Hey Franklaros, lo que pones alli, lo dice el El guille, pero lo que no me gusta es que te pone una clasecita en C para que logres todo eso y yo de C no como nada. men

Vean el ante y despues del manifest
« Última Modificación: febrero 07, 2006, 02:24:59 pm por sicario »

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2171
Re: Xp Styles sin crear ficheros .manifest
« Respuesta #4 : febrero 07, 2006, 02:41:04 pm »
Hey sicario, fijate que lo que dijo rdogg es cierto en lo que respecta a que en el vb .net 2005 ya podes habilitar automaticamente lo de los XP visual styles..., se me hace bien raro que tengas que agregar el manifest, la verdad es que hasta hoy instale el .net 2005 pero es un simple checkbox que seleccionas en las propiedades del proyecto..., ahi no te puedo ayudar en gran manera porque aqui tengo instalado el güindous 2000, pero si se de algo te aviso, talves y me animos a instalarlo en mi casa

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Xp Styles sin crear ficheros .manifest
« Respuesta #5 : febrero 07, 2006, 06:13:25 pm »
frank yo lei hace bastante tiempo en codeproject que esa manera que has puesto de habilitar los estilos del xp es como que malo hacerlo porque crea un bug o algo asi, ahorita estoy en la u , pero mañana en la mañana te busco la direccion me acuerdo que estaba en codeproject y ellos comentaban que no era bueno hacerlo de esa manera y que mejor crearas el manifest.exe

Y sicario por lo que veo de tu aplicacion me doy cuenta que si la estas haciendo en .net 2005 entonces por default como dice frank con el cheque se te habilita los themes. Inclusive hasta ya lo incluyeron para c# que sea con xp por defecto.

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Xp Styles sin crear ficheros .manifest
« Respuesta #6 : febrero 08, 2006, 11:54:24 am »
Mira frank aqui esta lo que yo te comentaba de cuando lei acerca de unos bugs al utilizar esa funcion de enablevisualstyle...

http://www.codeproject.com/buglist/EnableVisualStylesBug.asp  , inclusive en ese tema te dan un workaround para que ya no te salgan bugs pero al parecer no corrigue todos los bugs porque abajo hay como unos comentarios que hablan acerca de otros bugs que salen .. la verdad no he leido el tema completo.

Lo que si he notado es que ese tema lo encontre cuando usaba vs.net 2003 y que tenias que lidiar con como hacer que tus aplicaciones fueran compatibles con los themes y se refiere a la framework 1.1.

Lo que si no se es si siguen los problemas con la 2.0 o si los corrigieron. Pero insisto que el vs.net 2005 ya te crea de un solo en el proyecto la compatibilidad para los themes  :thumbsup:

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Xp Styles sin crear ficheros .manifest
« Respuesta #7 : febrero 08, 2006, 12:04:08 pm »
que interesante este chero ha hecho los pasos para crear un add-in que automaticamente te actualice los manifest

http://www.duncanmackenzie.net/pull.aspx?pageToPull=http://msdn.microsoft.com/library/?url=/library/en-us/dnwinforms/html/xpthemeaddin_.asp

de verdad vale la pena hacerlo :D