GetTextExtentPoint32A, fonction (wingdi.h)

La fonction GetTextExtentPoint32 calcule la largeur et la hauteur de la chaîne de texte spécifiée.

Syntaxe

BOOL GetTextExtentPoint32A(
  [in]  HDC    hdc,
  [in]  LPCSTR lpString,
  [in]  int    c,
  [out] LPSIZE psizl
);

Paramètres

[in] hdc

Handle dans le contexte de l’appareil.

[in] lpString

Pointeur vers une mémoire tampon qui spécifie la chaîne de texte. La chaîne n’a pas besoin d’être terminée par null, car le paramètre c spécifie la longueur de la chaîne.

[in] c

Longueur de la chaîne pointée vers lpString.

[out] psizl

Pointeur vers une structure SIZE qui reçoit les dimensions de la chaîne, en unités logiques.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro.

Remarques

La fonction GetTextExtentPoint32 utilise la police actuellement sélectionnée pour calculer les dimensions de la chaîne. La largeur et la hauteur, en unités logiques, sont calculées sans tenir compte de la coupe.

Étant donné que certains appareils kern caractères, la somme des étendues des caractères d’une chaîne peut ne pas être égale à l’étendue de la chaîne.

La largeur de chaîne calculée prend en compte l’espacement intercharacter défini par la fonction SetTextCharacterExtra et la justification définie par SetTextJustification. Cela est vrai à la fois pour l’affichage sur un écran et pour l’impression. Toutefois, si lpDx est défini dans ExtTextOut, GetTextExtentPoint32 ne prend pas en compte l’espacement intercharactaire ni la justification. En outre, pour EMF, le résultat d’impression prend toujours en compte l’espacement intercharactaire et la justification.

Lorsque vous traitez le texte affiché sur un écran, la largeur de chaîne calculée prend en compte l’espacement intercharacter défini par la fonction SetTextCharacterExtra et la justification définie par SetTextJustification. Toutefois, si lpDx est défini dans ExtTextOut, GetTextExtentPoint32 ne prend pas en compte l’espacement intercharactaire ni la justification. Toutefois, lors de l’impression avec EMF :

  • Le résultat d’impression ignore l’espacement intercharacter, bien que GetTextExtentPoint32 le prenne en compte.
  • Le résultat d’impression prend en compte la justification, bien que GetTextExtentPoint32 l’ignore .
Lorsque cette fonction retourne l’étendue du texte, elle suppose que le texte est horizontal, c’est-à-dire que l’échappement est toujours 0. Cela est vrai pour les mesures horizontales et verticales du texte. Même si vous utilisez une police qui spécifie un échappement différent de zéro, cette fonction n’utilise pas l’angle pendant qu’elle calcule l’étendue du texte. L’application doit la convertir explicitement. Toutefois, lorsque le mode graphique est défini sur GM_ADVANCED et que l’orientation des caractères est à 90 degrés de l’orientation d’impression, les valeurs renvoyées par cette fonction ne suivent pas cette règle. Lorsque l’orientation des caractères et l’orientation d’impression correspondent pour une chaîne donnée, cette fonction retourne les dimensions de la chaîne dans la structure SIZE sous la forme { cx : 116, cy : 18 }. Lorsque l’orientation des caractères et l’orientation d’impression sont séparées de 90 degrés pour la même chaîne, cette fonction retourne les dimensions de la chaîne dans la structure SIZE sous la forme { cx : 18, cy : 116 }.

GetTextExtentPoint32 ne prend pas en compte les caractères « \n » (nouvelle ligne) ou « \r\n » (retour chariot et nouvelle ligne) lorsqu’il calcule la hauteur d’une chaîne de texte.

Exemples

Pour obtenir un exemple, consultez Dessin de texte à partir de différentes polices sur la même ligne.

Notes

L’en-tête wingdi.h définit GetTextExtentPoint32 comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête wingdi.h (inclure Windows.h)
Bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

ExtTextOut

Fonctions police et texte

Vue d’ensemble des polices et du texte

SIZE

SetTextCharacterExtra

SetTextJustification