Como calcular diálogo unidades base com a fonte não baseados no sistema

Traduções deste artigo Traduções deste artigo
ID do artigo: 125681 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Este artigo demonstra como calcular a unidade base do diálogo para a caixa de diálogo usando uma fonte diferente de fonte de sistema no Windows 95. Você pode usar esse cálculo para criar modelos de caixa de diálogo na memória ou calcular as dimensões de caixa de diálogo.

Mais Informações

Cada modelo de caixa de diálogo contém medidas que especificar a posição, largura e altura da caixa de diálogo e controles que ele contém. Essas medidas são independentes de dispositivo, portanto, um aplicativo pode usar um único modelo para criar a mesma caixa de diálogo para todos os tipos de dispositivos de vídeo. Isso garante que uma caixa de diálogo será tenham as mesmas proporções e a aparência em todas as telas apesar resoluções diferentes e taxas de proporção entre telas.

Além disso, as medidas de caixa de diálogo são fornecidas no diálogo unidades base. Uma unidade de base horizontal é igual a um quarto da largura do caractere médio para a fonte de sistema. Uma unidade de base vertical é igual a um oitavo da altura da média de caractere para a fonte de sistema. Um aplicativo pode recuperar o número de pixels por unidade base para a exibição atual usando a função GetDialogBaseUnits. A palavra de ordem inferior do valor de retorno, da função GetDialogBaseUnits, contém as unidades de base horizontais e a palavra de ordem superior do valor de retorno, da função GetDialogBaseUnits, contém as unidades de base verticais.

Usando essas informações, você pode calcular as unidades de diálogo base para uma caixa de diálogo usando fonte diferente de fonte do sistema:
horz pixels == 2 * horz dialog units * (average char width  of dialog font
                        / average char width of system font)
vert pixels == 2 * vert dialog units * (average char height of dialog font
                        / average char height of system font)
				
como a fonte de uma caixa de diálogo for alterado, o tamanho real e a posição de um controle também muda.

Uma caixa de diálogo base unidade é equivalente ao número de pixels por unidade de caixa de diálogo o seguinte:
1 horz dialog base unit == (2 * average char width  dialog font / 
                                average char width  system font) pixels
1 vert dialog base unit == (2 * average char height dialog font / 
                                average char height system font) pixels
				
caractere média largura e altura de uma fonte podem ser calculadas da seguinte maneira:
hFontOld = SelectObject(hdc,hFont);
GetTextMetrics(hdc,&tm);
GetTextExtentPoint32(hdc,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst"
            "uvwxyz",52,&size);
avgWidth = (size.cx/26+1)/2;
avgHeight = (WORD)tm.tmHeight;
				
o campo tmAveCharWidth da estrutura TEXTMETRIC somente se aproxima a largura de caractere médio real (geralmente fornece a largura da letra "x") e assim a largura de caractere true médio deve ser calculada para coincidir com o valor usado pelo sistema.

Você pode usar a função MapDialogRect para converter unidades de caixa de diálogo em pixels, mas não há nenhuma função que irá converter pixels para unidades de caixa de diálogo. Você pode usar as fórmulas mostradas aqui para executar essa conversão.

Referências

Para obter mais informações sobre esse tópico, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
145994Como calcular unidades de diálogo ao não usar a fonte de sistema

Propriedades

ID do artigo: 125681 - Última revisão: segunda-feira, 11 de julho de 2005 - Revisão: 2.3
A informação contida neste artigo aplica-se a:
  • Microsoft Platform Software Development Kit-January 2000 Edition nas seguintes plataformas
    • Microsoft Windows 95
    • the operating system: Microsoft Windows 2000
Palavras-chave: 
kbmt kbdlg kbhowto KB125681 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 125681

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com