Activación Estilos Visuales

  • Artículo
  • 06/30/2021
  • 9 minutos para leer
    • j
    • c
    • D
    • m
    • m
Es esta página de ayuda?

Gracias.

En este tema se explica cómo configurar la aplicación para garantizar que los controles comunes se muestren en el estilo visual preferido del usuario.

Este tema incluye las siguientes secciones.

  • Usar Manifiestos o Directivas para Garantizar Que Los Estilos Visuales Se Puedan Aplicar a Aplicaciones
  • Utilizando ComCtl32.dll Versión 6 en una Aplicación Que Solo Usa Extensiones Estándar
  • Con ComCtl32 Versión 6 en el Panel de Control o una DLL Ejecutada por RunDll32.exe
  • Agregar Soporte de Estilo Visual a una Extensión, Complemento, Complemento MMC o una DLL Que Se Incorpora a un Proceso
  • Desactivar Estilos Visuales
  • Usar Estilos Visuales con Contenido HTML
  • Cuando no se aplican Estilos Visuales
  • Hacer que su Aplicación sea Compatible con Versiones anteriores de Windows
  • temas

Uso de Manifiestos o Directivas para Garantizar Que los Estilos Visuales Se puedan Aplicar a Aplicaciones

Para permitir que la aplicación use estilos visuales, debe usar ComCtl32.dll versión 6 o posterior. Debido a que la versión 6 no es redistribuible, solo está disponible cuando la aplicación se ejecuta en una versión de Windows que la contiene. Windows viene con la versión 5 y la versión 6. ComCtl32.dll versión 6 contiene tanto los controles de usuario como los controles comunes. De forma predeterminada, las aplicaciones utilizan los controles de usuario definidos en User32.dll y los controles comunes definidos en ComCtl32.dll versión 5. Para obtener una lista de las versiones DLL y sus plataformas de distribución, consulte Versiones de control comunes.

Si desea que su aplicación use estilos visuales, debe agregar un manifiesto de aplicación o una directiva de compilador que indique que ComCtl32.se debe usar la versión 6 de dll si está disponible.

Un manifiesto de aplicación permite a una aplicación especificar las versiones de un ensamblado que necesita. En Microsoft Win32, un ensamblado es un conjunto de archivos DLL y una lista de objetos versionables que están contenidos dentro de esos archivos DLL.

Los manifiestos se escriben en XML. El nombre del archivo de manifiesto de la aplicación es el nombre del ejecutable seguido de la extensión del nombre del archivo .manifestar; por ejemplo, MyApp.exe.manifestar. El siguiente manifiesto de ejemplo muestra que la primera sección describe el manifiesto en sí. La siguiente tabla muestra los atributos establecidos por el elemento assemblyIdentity en la sección descripción del manifiesto.

Atributo Descripción
la versión Versión del manifiesto. La versión debe estar en la forma mayor.menor.revision.construir (es decir, n. n. n. n, donde n < = 65535).
processorArchitecture Procesador para el que se desarrolla su aplicación.
name Incluye el nombre de la empresa, el nombre del producto y el nombre de la aplicación.
tipo Tipo de aplicación, como Win32.

El manifiesto de ejemplo también proporciona una descripción de la aplicación y especifica las dependencias de la aplicación. La siguiente tabla muestra los atributos establecidos por el elemento assemblyIdentity en la sección dependencia.

Atributo Descripción
tipo Tipo del componente de dependencia, como Win32.
nombre de Nombre del componente.
la versión Versión del componente.
processorArchitecture Procesador que el componente está diseñado para.
publicKeyToken token de Clave utilizado con este componente.
idioma Idioma del componente.

A continuación se muestra un ejemplo de un archivo de manifiesto.

Importante

Establezca la entrada processorArchitecture en » X86 «si su aplicación se dirige a la plataforma Windows de 32 bits, o en «amd64» si su aplicación se dirige a la plataforma Windows de 64 bits. También puede especificar «*», lo que garantiza que todas las plataformas estén dirigidas, como se muestra en los siguientes ejemplos.

<?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>

Si utiliza Microsoft Visual C++ 2005 o posterior, puede agregar la siguiente directiva de compilador al código fuente en lugar de crear manualmente un manifiesto. Para facilitar la lectura, la directiva se divide en varias líneas aquí.

#pragma comment(linker,"\"/manifestdependency:type='win32' \name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

Los siguientes temas describen los pasos para aplicar estilos visuales a diferentes tipos de aplicaciones. Observe que el formato del manifiesto es el mismo en cada caso.

Usando ComCtl32.dll Versión 6 en una aplicación que Solo usa extensiones estándar

Los siguientes son ejemplos de aplicaciones que no usan extensiones de terceros.

  • Calculadora
  • carta blanca (en Windows Vista y Windows 7)
  • Buscaminas (en Windows Vista y Windows 7)
  • Bloc de notas
  • Solitario (en Windows Vista y Windows 7)

Para crear un manifiesto y habilitar la aplicación para usar estilos visuales.

  1. Enlace a ComCtl32.lib y llame a InitCommonControls.

  2. Agrega un archivo llamado YourApp.exe.manifiesto en el árbol de fuentes que tiene el formato de manifiesto XML.

    <?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
  3. Agregue el manifiesto al archivo de recursos de su aplicación de la siguiente manera:

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"

    Nota

    Al agregar la entrada anterior al recurso, debe formatearla en una línea. Como alternativa, puede colocar el archivo de manifiesto XML en el mismo directorio que el archivo ejecutable de la aplicación. El sistema operativo cargará primero el manifiesto desde el sistema de archivos y, a continuación, comprobará la sección de recursos del ejecutable. La versión del sistema de archivos tiene prioridad.

Cuando compile su aplicación, el manifiesto se agregará como un recurso binario.

Usando ComCtl32 Versión 6 en el Panel de Control o una DLL Ejecutada por RunDll32.exe

Para crear un manifiesto y permitir que la aplicación use estilos visuales.

  1. Enlace a ComCtl32.lib y llame a InitCommonControls.

  2. Agrega un archivo llamado YourApp.cpl. manifest a su árbol de fuentes que tiene el formato de manifiesto XML.

    <?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
  3. Agregue el manifiesto al archivo de recursos de su aplicación como ID de recurso 123.

Nota

Cuando cree una aplicación de panel de control, colóquela en la categoría adecuada. Panel de control ahora admite la categorización de aplicaciones de Panel de control. Esto significa que las aplicaciones del Panel de control pueden asignarse identificadores y separarse en áreas de tareas, como Agregar o Quitar Programas, Apariencia y Temas, o Fecha, Hora, Idioma y Opciones Regionales.

Agregar compatibilidad con estilos visuales a una Extensión, Complemento, Complemento MMC o DLL Que se incorpora a un Proceso

Se puede agregar compatibilidad con estilos visuales a una extensión, complemento, complemento MMC o DLL que se incorpora a un proceso. Por ejemplo, siga los pasos siguientes para agregar compatibilidad con estilos visuales para un complemento de Microsoft Management Console (MMC).

  1. Compile el complemento con la bandera-DISOLATION_AWARE_ENABLED o inserte la siguiente instrucción antes de las ventanas # include».declaración h».

    #define ISOLATION_AWARE_ENABLED 1

    Para obtener más información sobre ISOLATION_AWARE_ENABLED, consulte Aislamiento de componentes.

  2. Incluya el archivo de encabezado de control común en el origen del complemento.

    #include <commctrl.h>
  3. Agrega un archivo llamado YourApp.manifiesto en el árbol de fuentes que utiliza el formato de manifiesto XML.

    <?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="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
  4. Agregue el manifiesto al archivo de recursos del complemento. Consulte Uso de ComCtl32 Versión 6 en una Aplicación Que Utiliza Extensiones, Complementos o una DLL Que se incorpora a un Proceso para obtener más información sobre cómo agregar un manifiesto a un archivo de recursos.

Desactivar estilos visuales

Puede desactivar estilos visuales para un control o para todos los controles de una ventana llamando a la función SetWindowTheme de la siguiente manera:

SetWindowTheme(hwnd, L" ", L" ");

En el ejemplo anterior, hwnd es el identificador de la ventana en la que se deshabilitan los estilos visuales. Después de la llamada, el control se renderiza sin estilos visuales.

Usar estilos visuales con contenido HTML

Las páginas HTML que modifican las propiedades CSS (Hojas de estilo en cascada), como fondo o borde, no tienen estilos visuales aplicados. Muestran el atributo CSS especificado. Cuando se especifica como parte del contenido, la mayoría de las propiedades CSS se aplican a los elementos que tienen estilos visuales aplicados.

De forma predeterminada, los estilos visuales se aplican a los controles HTML intrínsecos en las páginas que se muestran en Microsoft Internet Explorer 6 y versiones posteriores. Para desactivar los estilos visuales de una página HTML, agregue una META etiqueta a la sección

. Esta técnica también se aplica al contenido empaquetado como aplicaciones HTML (HTAs). Para desactivar los estilos visuales, la etiqueta META debe ser la siguiente:

<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">

Nota

Si la configuración del navegador y la configuración de la etiqueta no están de acuerdo, la página no aplicará estilos visuales. Por ejemplo, si la etiqueta META está configurada en «no» y el navegador está configurado para habilitar estilos visuales, los estilos visuales no se aplicarán a la página. Sin embargo, si el navegador o la etiqueta META se establecen en «sí» y el otro elemento no se especifica, se aplicarán estilos visuales.

Los estilos visuales pueden cambiar el diseño de tu contenido. Además, si establece ciertos atributos en controles HTML intrínsecos, como el ancho de un botón, es posible que la etiqueta del botón no se pueda leer en ciertos estilos visuales.

Debe probar a fondo su contenido utilizando estilos visuales para determinar si la aplicación de estilos visuales tiene un efecto adverso en su contenido y diseño.

Cuando no se aplican estilos visuales

Para evitar aplicar estilos visuales a una ventana de nivel superior, asigne a la ventana una región no nula (SetWindowRgn). El sistema asume que una ventana con una región no NULA es una ventana especializada que no usa estilos visuales. Una ventana secundaria asociada con una ventana de nivel superior de estilos no visuales puede seguir aplicando estilos visuales aunque la ventana principal no lo haga.

Si desea deshabilitar el uso de estilos visuales para todas las ventanas de su aplicación, llame a SetThemeAppProperties y no pase la bandera STAP_ALLOW_NONCLIENT. Si una aplicación no llama a SetThemeAppProperties, los valores de bandera asumidos son STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS | STAP_ALLOW_WEBCONTENT. Los valores asumidos hacen que el área de no cliente, los controles y el contenido web tengan un estilo visual aplicado.

Hacer que su aplicación sea compatible con versiones anteriores de Windows

Gran parte de la arquitectura de estilo visual está diseñada para facilitar el envío de su producto en versiones anteriores de Windows que no admiten el cambio de apariencia de los controles. Al enviar una aplicación para más de un sistema operativo, tenga en cuenta lo siguiente:

  • En versiones de Windows anteriores a Windows 8, los estilos visuales están desactivados cuando el alto contraste está activado. Para admitir alto contraste, una aplicación heredada que admita estilos visuales debe proporcionar una ruta de código separada para dibujar correctamente los elementos de la interfaz de usuario con alto contraste. En Windows 8, el alto contraste es una parte de los estilos visuales; sin embargo, una aplicación de Windows 8 (que incluye el GUID de Windows 8 en la sección de compatibilidad de su manifiesto de aplicación) todavía necesita proporcionar una ruta de código separada para renderizar correctamente en alto contraste en Windows 7 y anterior.
  • Si utiliza las funciones de ComCtl32.dll versión 6, como la vista de mosaico o el control de enlace, debe manejar el caso en el que esos controles no estén disponibles en el equipo del usuario. ComCtl32.dll versión 6 no es redistribuible.
  • Pruebe su aplicación para asegurarse de que no confía en las características de ComCtl32.dll versión 6 sin comprobar primero la versión actual.
  • No vincule a UXTheme.lib.
  • Escriba código de gestión de errores para instancias en las que los estilos visuales no funcionan como se esperaba.
  • La instalación del manifiesto de la aplicación en versiones anteriores no afectará a la representación de los controles.

Estilos Visuales

Write a Comment

Tu dirección de correo electrónico no será publicada.