Share via


Método ITextServices2::TxGetNaturalSize2 (textserv.h)

Redimensiona um controle para que ele se ajuste adequadamente ao conteúdo. Esse método é semelhante a TxGetNaturalSize, mas também recupera a ascensão da linha superior do texto.

Sintaxe

HRESULT TxGetNaturalSize2(
  DWORD          dwAspect,
  HDC            hdcDraw,
  HDC            hicTargetDev,
  DVTARGETDEVICE *ptd,
  DWORD          dwMode,
  const SIZEL    *psizelExtent,
  LONG           *pwidth,
  LONG           *pheight,
  LONG           *pascent
);

Parâmetros

dwAspect

Tipo: DWORD

O aspecto do desenho. Pode ser qualquer um dos valores da enumeração DVASPECT .

hdcDraw

Tipo: HDC

O contexto do dispositivo no qual o desenho ocorre.

hicTargetDev

Tipo: HDC

O contexto do dispositivo para o qual o texto deve ser formatado (ou seja, para WYSIWYG).

ptd

Tipo: DVTARGETDEVICE*

Mais informações sobre o dispositivo de destino.

dwMode

Tipo: DWORD

O tipo de ajuste solicitado. Pode ser um dos seguintes.

Valor Significado
TXTNS_EMU
Use EMUs (Unidades de Métrica) em inglês, em vez de pixels, como as unidades de medição (ambas as maneiras) para os parâmetros desse método.
TXTNS_FITTOCONTENT
Redimensione o controle para ajustar todo o texto formatando o texto para a largura que é passada. O objeto de serviços de texto retorna a altura de todo o texto e a largura da linha mais larga.

Por exemplo, isso deve ser feito quando o usuário clica duas vezes em um dos identificadores do controle.

TXTNS_FITTOCONTENT2
Redimensione o controle para que ele se ajuste ao conteúdo recuado.
TXTNS_FITTOCONTENT3
Redimensione o controle para que ele se ajuste ao conteúdo recuado e ao espaço em branco à direita.
TXTNS_FITTOCONTENTWSP
Redimensione o controle para que ele se ajuste ao conteúdo não recuado e ao espaço em branco à direita.
TXTNS_INCLUDELASTLINE
Para um controle de texto sem formatação, inclua a altura do retorno de carro final ao calcular o tamanho.
TXTNS_ROUNDTOLINE
Redimensione o controle para mostrar um número integral de linhas (nenhuma linha é recortada). Formate texto suficiente para preencher a largura e a altura passadas e retorne uma altura arredondada para o limite de linha mais próximo.
Nota A largura e a altura passadas e retornadas correspondem ao retângulo de exibição. O host deve se ajustar novamente ao retângulo do cliente, conforme necessário. Como esses valores representam a extensão do objeto de texto, eles são entrada e saída em coordenadas HIMETRIC (cada unidade HIMETRIC é 0,01 milímetro) e a medição não inclui nenhum fator de zoom. Para obter uma discussão sobre o fator zoom, consulte TxGetExtent.
 

psizelExtent

Tipo: const SIZEL*

Tamanhos de extensões (em unidades HIMETRIC) a serem usados para zoom.

pwidth

Tipo: LONG*

A largura do ajuste definido por dwMode.

pheight

Tipo: LONG*

A altura do ajuste definido por dwMode.

pascent

Tipo: LONG*

Para controles de linha única, recebe a ascensão (unidades acima da linha de base) dos caracteres na linha superior do texto.

Valor retornado

Tipo: HRESULT

Se o método for bem-sucedido, o valor retornado será S_OK.

Se os serviços de texto não puderem ativar o objeto, o valor retornado será um dos seguintes códigos HRESULT . Para obter mais informações sobre códigos de erro COM, consulte Tratamento de erros em COM.

Código de retorno Descrição
E_FAIL
Não é possível determinar o tamanho correto.
E_INVALIDARG
Um ou mais argumentos não são válidos.
E_OUTOFMEMORY
Memória insuficiente.

Comentários

Os quatro primeiros parâmetros são semelhantes aos parâmetros equivalentes em ITextServices::TxDraw e fornecem as mesmas informações. No caso em que as linhas devem ser recalculadas, TxGetNaturalSize2 usa esses valores da mesma maneira que em ITextServices::TxDraw.

Os parâmetros pwidth e pheight são parâmetros de entrada/saída. O host passa a largura e a altura provisórias da extensão natural do objeto de texto. O objeto de serviços de texto compara esses valores com seu estado armazenado em cache atual e, se diferente, recalcula linhas. Em seguida, ele calcula e retorna o tamanho natural, conforme especificado por dwMode.

Exemplos

O exemplo a seguir mostra como inicializar o parâmetro psizelExtent para um fator de zoom de 1:1. As reticências indicam o código que você precisa fornecer.


LONG dxpi = GetDeviceCaps(hdc, LOGPIXELSX);
LONG dypi = GetDeviceCaps(hdc, LOGPIXELSY);
LONG dyAscent = 0;
LONG dx = ... ;  // Text image width, in pixels 
LONG dy = ... ;  // Text image height, in pixels 
SIZEL sizel;     // dx and dy, in HIMETRIC

ITextServices2 *pserv = ... ; // Interface for single-line control

sizel.cx = MulDiv(dx, HIMETRIC_PER_INCH, dxpi); 
sizel.cy = MulDiv(dy, HIMETRIC_PER_INCH, dypi);

pserv->TxGetNaturalSize2(DVASPECT_DOCPRINT, hdc, hdcNil, pNil,
    TXTNS_FITTOCONTENT, &sizel, &dx, &dy, &dyAscent))) 

Requisitos

   
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho textserv.h
DLL Msftedit.dll

Confira também

ITextServices2