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 |
---|---|
|
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. |
|
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. |
|
Redimensione o controle para que ele se ajuste ao conteúdo recuado. |
|
Redimensione o controle para que ele se ajuste ao conteúdo recuado e ao espaço em branco à direita. |
|
Redimensione o controle para que ele se ajuste ao conteúdo não recuado e ao espaço em branco à direita. |
|
Para um controle de texto sem formatação, inclua a altura do retorno de carro final ao calcular o tamanho. |
|
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 |
---|---|
|
Não é possível determinar o tamanho correto. |
|
Um ou mais argumentos não são válidos. |
|
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 |