Activar Estilos Visuais

  • Artigo
  • 06/30/2021
  • 9 minutos de leitura
    • j
    • c
    • D
    • m
    • m
É esta página útil?Obrigado .

este tópico explica como configurar seu aplicativo para garantir que os controles comuns sejam exibidos no estilo visual preferido do Usuário.

este tópico inclui as seguintes seções.

  • usando manifestos ou diretivas para garantir que estilos visuais possam ser aplicados a aplicativos
  • usando ComCtl32.dll versão 6 em um aplicativo que usa apenas extensões padrão
  • usando ComCtl32 versão 6 no painel de controle ou uma DLL que é executado por RunDll32.exe
  • Adicionando Estilo Visual de Suporte a uma Extensão, Plug-in, Snap-in do MMC ou uma DLL Que É Levado a um Processo de
  • Desligar Estilos Visuais
  • Usar Estilos Visuais com Conteúdo HTML
  • Quando o Visual Estilos não são Aplicadas
  • Tornar Seu Aplicativo Compatível com Versões Anteriores do Windows
  • tópicos Relacionados

Usando Manifestos ou Directivas para Garantir Que o Visual Estilos Podem Ser Aplicados para Aplicações

Para activar a aplicação para utilizar estilos visuais, você deve usar ComCtl32.dll versão 6 ou posterior. Como a versão 6 não é redistribuível, ela está disponível apenas quando seu aplicativo está sendo executado em uma versão do Windows que a contém. O Windows vem com a versão 5 e a versão 6. ComCtl32.dll versão 6 contém os controles do Usuário e os controles comuns. Por padrão, os aplicativos usam os controles de usuário definidos no User32.dll e os controles comuns definidos no ComCtl32.versão dll 5. Para obter uma lista de versões DLL e suas plataformas de distribuição, consulte Versões de controle comuns.

se você deseja que seu aplicativo use estilos visuais, você deve adicionar um manifesto de aplicativo ou diretiva do compilador que indica que ComCtl32.dll versão 6 deve ser usado se estiver disponível.

um manifesto de aplicativo permite que um aplicativo especifique quais versões de um assembly ele requer. No Microsoft Win32, um assembly é um conjunto de DLLs e uma lista de objetos versionáveis que estão contidos nessas DLLs.

manifestos são escritos em XML. O nome do arquivo de manifesto do aplicativo é o nome do seu executável seguido pela extensão do nome do arquivo .manifestar; por exemplo, MyApp.exe.manifestar. O manifesto de amostra a seguir mostra que a primeira seção descreve o próprio manifesto. A tabela a seguir mostra os atributos definidos pelo elemento assemblyIdentity na seção Descrição do manifesto.

Atributo Descrição
versão Versão do manifesto. A versão deve estar na forma principal.menor.revisao.construir (isto é, N. N. N. n, onde n < = 65535).
processorarquitetura processador para o qual sua aplicação é desenvolvida.
nome Inclui nome da empresa, nome do produto e nome do aplicativo.
digite tipo de seu aplicativo, como Win32.

o manifesto de amostra também fornece uma descrição do seu aplicativo e especifica dependências do aplicativo. A tabela a seguir mostra os atributos definidos pelo elemento assemblyIdentity na seção dependência.

Atributo Descrição
tipo Tipo de componente de dependência, como Win32.
nome Nome do componente.
versão Versão do componente.
processorarquitetura processador para o qual o componente foi projetado.
publicKeyToken token de Chave usado com este componente.
linguagem linguagem do componente.

a seguir está um exemplo de um arquivo de manifesto.

importante

defina a entrada processorArchitecture como” X86 “se seu aplicativo atingir a plataforma Windows de 32 bits ou” amd64 ” se seu aplicativo atingir a plataforma Windows de 64 bits. Você também pode especificar”*”, o que garante que todas as plataformas sejam direcionadas, conforme mostrado nos exemplos a seguir.

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

se você estiver usando o Microsoft Visual C++ 2005 ou posterior, poderá adicionar a seguinte diretiva do compilador ao seu código-fonte em vez de criar manualmente um manifesto. Para legibilidade, a diretiva é dividida em várias linhas aqui.

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

os seguintes tópicos descrevem as etapas para aplicar estilos visuais a diferentes tipos de aplicativos. Observe que o formato do manifesto é o mesmo em cada caso.

Usando ComCtl32.dll versão 6 em um aplicativo que usa apenas extensões padrão

a seguir estão exemplos de aplicativos que não usam extensões de terceiros.

  • Calculadora
  • FreeCell (no Windows Vista e Windows 7)
  • campo minado (no Windows Vista e Windows 7)
  • bloco de notas
  • Paciência (no Windows Vista e Windows 7)

Para criar um manifesto e activar a aplicação para utilizar estilos visuais.

  1. Link para ComCtl32.lib e chamar InitCommonControls.

  2. adicione um arquivo chamado YourApp.exe.manifest para sua árvore de origem que tem o formato de manifesto 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. adicione o manifesto ao arquivo de recursos do seu aplicativo da seguinte maneira:

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"

    Nota

    ao adicionar a entrada anterior ao recurso, você deve formatá-la em uma linha. Alternativamente, você pode colocar o arquivo de manifesto XML no mesmo diretório que o arquivo executável do seu aplicativo. O sistema operacional carregará o manifesto do sistema de arquivos primeiro e, em seguida, verificará a seção de recursos do executável. A versão do sistema de arquivos tem precedência.

Quando você cria seu aplicativo, o manifesto será adicionado como um recurso binário.

usando ComCtl32 versão 6 no painel de controle ou uma DLL que é executado por RunDll32.exe

para criar um manifesto e permitir que seu aplicativo use estilos visuais.

  1. Link para ComCtl32.lib e chamar InitCommonControls.

  2. adicione um arquivo chamado YourApp.cpl. manifest para sua árvore de origem que possui o formato de manifesto 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. adicione o manifesto ao arquivo de recursos do seu aplicativo como resource ID 123.

Nota

Quando você criar um aplicativo de Painel de Controle, coloque-o na categoria apropriada. O painel de controle agora suporta a categorização de aplicativos do Painel de controle. Isso significa que os aplicativos do Painel de controle podem ser atribuídos identificadores e separados em áreas de tarefa, como adicionar ou Remover Programas, aparência e temas, ou data, hora, idioma e opções regionais.

adicionar suporte de estilo Visual a uma extensão, Plug-in, Snap-in MMC ou uma DLL que é trazida para um processo

o Suporte para estilos visuais pode ser adicionado a uma extensão, plug-in, snap-in MMC ou uma DLL que é trazida para um processo. Por exemplo, use as etapas a seguir para adicionar suporte a estilos visuais para um snap-in do Microsoft Management Console (MMC).

  1. Compile seu snap-in com o sinalizador-DISOLATION_AWARE_ENABLED ou insira a seguinte instrução antes do #include “windows.h ” declaração.

    #define ISOLATION_AWARE_ENABLED 1

    para obter mais informações sobre ISOLATION_AWARE_ENABLED, consulte isolando componentes.

  2. inclua o arquivo de cabeçalho de controle comum em sua fonte de snap-in.

    #include <commctrl.h>
  3. Adicione um arquivo chamado YourApp.manifest para sua árvore de origem que usa o formato de manifesto 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. adicione o manifesto ao arquivo de recursos do snap-in. Consulte Como usar o comctl32 versão 6 em um aplicativo que usa extensões, Plug-ins ou uma DLL que é trazida para um processo para obter detalhes sobre como adicionar um manifesto a um arquivo de recurso.

Desligar o Visual de Estilos

Você pode desativar estilos visuais para um controle ou para todos os controles em uma janela chamando a função SetWindowTheme da seguinte forma:

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

No exemplo anterior, o hwnd é o identificador de janela para desativar estilos visuais. Após a chamada, o controle é renderizado sem estilos visuais.

usando estilos visuais com conteúdo HTML

páginas HTML que modificam as propriedades Cascading Style Sheets (CSS), como plano de fundo ou borda, não têm estilos visuais aplicados a eles. Eles exibem o atributo CSS especificado. Quando especificado como parte do conteúdo, a maioria das propriedades CSS se aplica a elementos que têm estilos visuais aplicados.

por padrão, os estilos visuais são aplicados a controles HTML intrínsecos em páginas exibidas no Microsoft Internet Explorer 6 e versões posteriores. Para desativar estilos visuais para uma página HTML, adicione uma META tag à seção

. Essa técnica também se aplica ao conteúdo empacotado como aplicativos HTML (HTAs). Para desativar estilos visuais, a META tag deve ser a seguinte:

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

Nota

se a configuração do navegador e a configuração da tag não concordarem, a página não aplicará estilos visuais. Por exemplo, se a META tag estiver definida como “não” e o navegador estiver definido para habilitar estilos visuais, estilos visuais não serão aplicados à página. No entanto, se o navegador ou META tag estiver definido como “Sim” e o outro item não for especificado, estilos visuais serão aplicados.

os estilos visuais podem alterar o layout do seu conteúdo. Além disso, se você definir certos atributos em controles HTML intrínsecos, como a largura de um botão, poderá descobrir que o rótulo no botão é ilegível em certos estilos visuais.

você deve testar completamente seu conteúdo usando estilos visuais para determinar se a aplicação de estilos visuais tem um efeito adverso em seu conteúdo e layout.

quando os estilos visuais não são aplicados

para evitar aplicar estilos visuais a uma janela de nível superior, dê à janela uma região não nula (SetWindowRgn). O sistema assume que uma janela com uma região não nula é uma janela especializada que não usa estilos visuais. Uma janela filho associada a uma janela de Nível Superior de estilos não visuais ainda pode aplicar estilos visuais, embora a janela pai não o faça.

se você quiser desativar o uso de estilos visuais para todas as janelas em seu aplicativo, Chame SetThemeAppProperties e não passe o sinalizador STAP_ALLOW_NONCLIENT. Se um aplicativo não chamar SetThemeAppProperties, os valores de sinalizador assumidos são STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS | STAP_ALLOW_WEBCONTENT. Os valores assumidos fazem com que a área não Cliente, os controles e o conteúdo da web tenham um estilo visual aplicado.

Tornar Seu Aplicativo Compatível com Versões Anteriores do Windows

Muito do estilo visual de arquitetura é projetada para tornar mais simples para continuar a enviar o seu produto em versões anteriores do Windows que não suportam a alterar o aspecto dos controlos. Ao enviar um aplicativo para mais de um sistema operacional, esteja ciente do seguinte:

  • nas versões do Windows anteriores ao Windows 8, os estilos visuais estão desativados quando o alto contraste está ativado. Para suportar alto contraste, um aplicativo legado que suporta estilos visuais precisa fornecer um caminho de código separado para desenhar corretamente os elementos da interface do usuário em alto contraste. No Windows 8, o alto contraste é uma parte de estilos visuais; no entanto, aplicações do Windows 8 (que inclui o Windows 8 GUID na seção compatibilidade de seu manifesto de aplicativo) ainda precisa fornecer um código separado caminho para renderizar corretamente em alto contraste no Windows 7 anterior.
  • se você usar os recursos no ComCtl32.dll versão 6, como a visualização em bloco ou o controle de link, você deve lidar com o caso em que esses controles não estão disponíveis no computador do Usuário. ComCtl32.dll versão 6 não é redistribuível.
  • Teste seu aplicativo para ter certeza de que não está confiando nos recursos do ComCtl32.dll versão 6 sem primeiro verificar a versão atual.
  • Não link para UxTheme.dado.
  • escrever código de manipulação de erros para instâncias quando estilos visuais não funcionam como esperado.
  • instalar o manifesto do seu aplicativo em versões anteriores não afetará a renderização dos controles.

Estilos Visuais

Write a Comment

O seu endereço de email não será publicado.