Método ITextServices2::TxGetNaturalSize2 (textserv.h)
Cambia el tamaño de un control para que se ajuste adecuadamente a su contenido. Este método es similar a TxGetNaturalSize, pero también recupera el ascenso de la línea superior del texto.
Sintaxis
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
Aspecto del dibujo. Puede ser cualquiera de los valores de la enumeración DVASPECT .
hdcDraw
Tipo: HDC
Contexto del dispositivo en el que se produce el dibujo.
hicTargetDev
Tipo: HDC
Contexto del dispositivo para el que se debe dar formato al texto (es decir, para WYSIWYG).
ptd
Tipo: DVTARGETDEVICE*
Más información sobre el dispositivo de destino.
dwMode
Tipo: DWORD
Tipo de ajuste solicitado. Puede ser uno de los siguientes.
Valor | Significado |
---|---|
|
Use unidades métricas en inglés (EMU) en lugar de píxeles como unidades de medición (ambas maneras) para los parámetros de este método. |
|
Cambie el tamaño del control para ajustar todo el texto mediante el formato del texto al ancho que se pasa. El objeto de servicios de texto devuelve el alto de todo el texto y el ancho de la línea más ancha.
Por ejemplo, esto se debe hacer cuando el usuario hace doble clic en uno de los identificadores del control. |
|
Cambie el tamaño del control para que se ajuste al contenido con sangría. |
|
Cambie el tamaño del control para que se ajuste al contenido con sangría y al espacio en blanco final. |
|
Cambie el tamaño del control para que se ajuste al contenido sin sangr y al espacio en blanco final. |
|
Para un control de texto sin formato, incluya el alto del retorno de carro final al calcular el tamaño. |
|
Cambie el tamaño del control para mostrar un número entero de líneas (no se recorta ninguna línea). Dar formato al texto suficiente para rellenar el ancho y alto que se pasa y, a continuación, devolver un alto redondeado al límite de línea más cercano.
Nota El ancho y alto pasados y devueltos corresponden al rectángulo de vista. El host debe volver a ajustarse al rectángulo del cliente según sea necesario. Dado que estos valores representan la extensión del objeto de texto, son entrada y salida en coordenadas HIMETRIC (cada unidad HIMETRIC es de 0,01 milímetros) y la medición no incluye ningún factor de zoom. Para obtener una explicación del factor de zoom, consulte TxGetExtent.
|
psizelExtent
Tipo: const SIZEL*
Tamaños de extensiones (en unidades HIMETRIC) que se usarán para el zoom.
pwidth
Tipo: LONG*
Ancho del ajuste definido por dwMode.
pheight
Tipo: LONG*
Alto del ajuste definido por dwMode.
pascent
Tipo: LONG*
En el caso de los controles de una sola línea, recibe el ascenso (unidades por encima de la línea base) de caracteres en la línea superior del texto.
Valor devuelto
Tipo: HRESULT
Si el método se realiza correctamente, el valor devuelto se S_OK.
Si los servicios de texto no pudieron activar el objeto, el valor devuelto es uno de los siguientes códigos HRESULT . Para obtener más información sobre los códigos de error COM, vea Control de errores en COM.
Código devuelto | Descripción |
---|---|
|
No se puede determinar el tamaño correcto. |
|
Uno o varios argumentos no son válidos. |
|
Memoria insuficiente. |
Comentarios
Los cuatro primeros parámetros son similares a los parámetros equivalentes de ITextServices::TxDraw y proporcionan la misma información. En el caso de que se deben recalcular las líneas, TxGetNaturalSize2 usa estos valores de las mismas maneras que en ITextServices::TxDraw.
Los parámetros pwidth y pheight son parámetros in/out. El host pasa el ancho provisional y el alto de la extensión natural del objeto de texto. El objeto de servicios de texto compara estos valores con su estado almacenado en caché actual y, si es diferente, recalcula las líneas. A continuación, calcula y devuelve el tamaño natural, tal y como especifica dwMode.
Ejemplos
En el ejemplo siguiente se muestra cómo inicializar el parámetro psizelExtent para en un factor de zoom de 1:1. Los puntos suspensivos indican el código que debe proporcionar.
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 compatible | Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | textserv.h |
Archivo DLL | Msftedit.dll |