Activando los temas XP (sólo proyectos exe)


Easy Code le permite incluir un manifiesto de XP en el proyecto de manera automática. Los temas XP activan los "Windows Common controls 6.0" con el fin de aprovechar la nueva apariencia de los controles en los sistemas Windows XP y posteriores. Un manifiesto es un archivo de texto en formato XML, y para que Easy Code pueda incluirlo en el ejecutable, el archivo manifiesto debe llamarse Manifest.xml y estar en la carpeta Res del proyecto (cuando se crea un proyecto nuevo, Easy Code ya crea un archivo Manifest.xml predeterminado en la carpeta Res del proyecto). Además, es preciso marcar la opción Manifiesto de las Propiedades del proyecto. De esta manera, se incluirá en el archivo ejecutable como un recurso y se activarán los nuevos controles. Aquí tiene un sencillo ejemplo de un manifiesto de tema XP para aplicaciones de 32 bits:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity>
    version="2.0.00.0001"
    processorArchitecture="x86"
    name="EasyCode.exe"
    type="win32"
</assemblyIdentity>
<description>Entorno visual de programación en ensamblador</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity>
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            publicKeyToken="6595b64144ccf1df"
            processorArchitecture="x86"
            language="*"
        />
    </dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
        <!-- Windows 10 -->
        <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
        <!-- Windows 8.1 -->
        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
        <!-- Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
        <!-- Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-08e2d-a2440225f93a}"/>
        <!-- Windows 8 -->
        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    </application>>
</compatibility>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel
                level="asInvoker"
                uiAccess="false"
            />
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>

Para aplicaciones de 64 bits, el manifiesto debería ser así (observe los cambios en el ítem processorArchitecture):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity>
    version="2.0.00.0001"
    processorArchitecture="amd64"
    name="EasyCode.exe"
    type="win32"
</assemblyIdentity>
<description>Assembly visual programming environment</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity>
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            publicKeyToken="6595b64144ccf1df"
            processorArchitecture="amd64"
            language="*"
        />
    </dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
        <!-- Windows 10 -->
        <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
        <!-- Windows 8.1 -->
        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
        <!-- Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
        <!-- Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-08e2d-a2440225f93a}"/>
        <!-- Windows 8 -->
        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    </application>>
</compatibility>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel
                level="asInvoker"
                uiAccess="false"
            />
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>

Tan solo tiene que cambiar los campos version, name y description (los que se muestran en fuente negrita de color azul). Trate de generar todos los ejemplos que vienen con Easy Code y verá la apariencia de los nuevos "common controls" en los sistemas Windows y posteriores.

IMPORTANTE: La función de la API GetVersionEx devolverá la versión de Windows 8 (ecWin8) para las aplicaciones que no se manifiesten explícitamente para Windows 8.1 o Windows 10, aunque se estén ejecutando en Window 8.1 o Windows 10. Si desea manifestar sus aplicaciones para Windows 8.1 o Windows 10, el archivo Manifiesto debe incluir algunas líneas adicionales (para más información, por favor haga clic en este enlace). El archivo Manifest.xml prdeterminado que genera Easy Code cuando se crea un proyecto nuevo, ya incluye las líneas necesarias para que la aplicación se manifieste debidamente.

OBSERVACIONES: En tiempo de diseño, o cuando se prueba una ventana, todos los objetos control se muestran con el nuevo estilo de los 'common controls' si la opción Manifiesto está marcada en las Propietades del proyecto. Contrariamente, se mostrarán con el estilo antiguo de los controles.

NOTA: Tenga presente que el archivo Manifest.xml no tiene efecto alguno para sistemas Windows anteriores a XP.