Función DrawTextExA (winuser.h)

La función DrawTextEx dibuja texto con formato en el rectángulo especificado.

Sintaxis

int DrawTextExA(
  [in]      HDC              hdc,
  [in, out] LPSTR            lpchText,
  [in]      int              cchText,
  [in, out] LPRECT           lprc,
  [in]      UINT             format,
  [in]      LPDRAWTEXTPARAMS lpdtp
);

Parámetros

[in] hdc

Identificador del contexto del dispositivo en el que se va a dibujar.

[in, out] lpchText

Puntero a la cadena que contiene el texto que se va a dibujar. Si el parámetro cchText es -1, la cadena debe terminar en null.

Si dwDTFormat incluye DT_MODIFYSTRING, la función podría agregar hasta cuatro caracteres adicionales a esta cadena. El búfer que contiene la cadena debe ser lo suficientemente grande como para acomodar estos caracteres adicionales.

[in] cchText

Longitud de la cadena a la que apunta lpchText. Si cchText es -1, se supone que el parámetro lpchText es un puntero a una cadena terminada en null y DrawTextEx calcula automáticamente el recuento de caracteres.

[in, out] lprc

Puntero a una estructura RECT que contiene el rectángulo, en coordenadas lógicas, en las que se va a dar formato al texto.

[in] format

Opciones de formato. Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
DT_BOTTOM
Justifica el texto en la parte inferior del rectángulo. Este valor solo se usa con el valor DT_SINGLELINE.
DT_CALCRECT
Determina el ancho y el alto del rectángulo. Si hay varias líneas de texto, DrawTextEx usa el ancho del rectángulo al que apunta el parámetro lprc y extiende la base del rectángulo para enlazar la última línea de texto. Si solo hay una línea de texto, DrawTextEx modifica el lado derecho del rectángulo para que delimite el último carácter de la línea. En cualquier caso, DrawTextEx devuelve el alto del texto con formato, pero no dibuja el texto.
DT_CENTER
Centra el texto horizontalmente en el rectángulo.
DT_EDITCONTROL
Duplica las características que muestran texto de un control de edición de varias líneas. En concreto, el ancho medio de caracteres se calcula de la misma manera que para un control de edición y la función no muestra una última línea parcialmente visible.
DT_END_ELLIPSIS
Para el texto mostrado, reemplaza el final de una cadena por puntos suspensivos para que el resultado se ajuste al rectángulo especificado. Cualquier palabra (no al final de la cadena) que supere los límites del rectángulo se trunca sin puntos suspensivos. La cadena no se modifica a menos que se especifique la marca DT_MODIFYSTRING.

Comparar con DT_PATH_ELLIPSIS y DT_WORD_ELLIPSIS.

DT_EXPANDTABS
Expande los caracteres de tabulación. El número de caracteres predeterminado por tabulación es ocho.
DT_EXTERNALLEADING
Incluye la inicial externa de fuente en el alto de la línea. Normalmente, la punta externa no se incluye en el alto de una línea de texto.
DT_HIDEPREFIX
Omite el carácter de prefijo de y comercial (&) en el texto. La letra siguiente no estará subrayada, pero se siguen procesando otros caracteres de prefijo mnemónico.

Ejemplo:

cadena de entrada: "A&bc&&d"

normal: "Abc&d"

DT_HIDEPREFIX: "Abc&d"

Comparar con DT_NOPREFIX y DT_PREFIXONLY.

DT_INTERNAL
Utiliza la fuente del sistema para calcular la métrica del texto.
DT_LEFT
Alinea el texto a la izquierda.
DT_MODIFYSTRING
Modifica la cadena especificada para que coincida con el texto mostrado. Este valor no tiene ningún efecto a menos que se especifique DT_END_ELLIPSIS o DT_PATH_ELLIPSIS.
DT_NOCLIP
Dibuja sin recorte. DrawTextEx es algo más rápido cuando se usa DT_NOCLIP.
DT_NOFULLWIDTHCHARBREAK
Impide un salto de línea en un DBCS (cadena de caracteres de doble ancho), por lo que la regla de salto de línea es equivalente a las cadenas SBCS. Por ejemplo, esto se puede usar en ventanas coreanas para obtener más legibilidad de las etiquetas de icono. Este valor no tiene ningún efecto a menos que se especifique DT_WORDBREAK.
DT_NOPREFIX
Desactiva el procesamiento de caracteres de prefijo. Normalmente, DrawTextEx interpreta el carácter de prefijo mnemónico (&) como una directiva para resaltar el carácter siguiente, y los caracteres de prefijo mnemónico (&&) de doble amperado como una directiva para imprimir una sola y comercial. Al especificar DT_NOPREFIX, este procesamiento está desactivado. Comparación con DT_HIDEPREFIX y DT_PREFIXONLY
DT_PATH_ELLIPSIS
Para el texto mostrado, reemplaza los caracteres en medio de la cadena por puntos suspensivos para que el resultado se ajuste al rectángulo especificado. Si la cadena contiene caracteres de barra diagonal inversa (\\), DT_PATH_ELLIPSIS conserva tanto como sea posible el texto después de la última barra diagonal inversa. La cadena no se modifica a menos que se especifique la marca DT_MODIFYSTRING.

Comparar con DT_END_ELLIPSIS y DT_WORD_ELLIPSIS.

DT_PREFIXONLY
Dibuja solo un subrayado en la posición del carácter que sigue al carácter de prefijo (&). No dibuja ningún carácter en la cadena.

Ejemplo:

cadena de entrada: "A&bc&&d"

normal: "Abc&d"

PREFIXONLY: " _ "

Comparar con DT_NOPREFIX y DT_HIDEPREFIX.

DT_RIGHT
Alinea el texto a la derecha.
DT_RTLREADING
Diseño en orden de lectura de derecha a izquierda para texto bidireccional cuando la fuente seleccionada en hdc es una fuente hebreo o árabe. El orden de lectura predeterminado para todo el texto es de izquierda a derecha.
DT_SINGLELINE
Muestra texto solo en una sola línea. Los retornos de carro y las fuentes de línea no rompen la línea.
DT_TABSTOP
Establece las tabulaciones. La estructura DRAWTEXTPARAMS a la que apunta el parámetro lpDTParams especifica el número de anchos de caracteres promedio por tabulación.
DT_TOP
Justifica el texto en la parte superior del rectángulo.
DT_VCENTER
Centra el texto verticalmente. Este valor solo se usa con el valor DT_SINGLELINE.
DT_WORDBREAK
Rompe palabras. Las líneas se interrumpen automáticamente entre palabras si una palabra se extiende más allá del borde del rectángulo especificado por el parámetro lprc . Una secuencia de avance de retorno de carro también rompe la línea.
DT_WORD_ELLIPSIS
Trunca cualquier palabra que no cabe en el rectángulo y agrega puntos suspensivos.

Compare con DT_END_ELLIPSIS y DT_PATH_ELLIPSIS.

[in] lpdtp

Puntero a una estructura DRAWTEXTPARAMS que especifica opciones de formato adicionales. Este parámetro puede ser NULL.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es el alto del texto en unidades lógicas. Si se especifica DT_VCENTER o DT_BOTTOM, el valor devuelto es el desplazamiento de lprc->top a la parte inferior del texto dibujado.

Si la función no se realiza correctamente, el valor devuelto es cero.

Comentarios

La función DrawTextEx solo admite fuentes cuya orientación y escape son cero.

El modo de alineación de texto para el contexto del dispositivo debe incluir las marcas TA_LEFT, TA_TOP y TA_NOUPDATECP.

Nota

El encabezado winuser.h define DrawTextEx como un alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll
Conjunto de API ext-ms-win-ntuser-misc-l1-2-0 (introducido en Windows 8.1)

Consulte también

DRAWTEXTPARAMS

Drawtext

Funciones de fuente y texto

Información general sobre fuentes y texto