Partager via


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

Redimensionne un contrôle pour qu’il s’adapte correctement à son contenu. Cette méthode est similaire à TxGetNaturalSize, mais récupère également l’ascension de la ligne supérieure de texte.

Syntaxe

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

Paramètres

dwAspect

Type : DWORD

Aspect du dessin. Il peut s’agir de l’une des valeurs de l’énumération DVASPECT .

hdcDraw

Type : HDC

Contexte de l’appareil dans lequel le dessin se produit.

hicTargetDev

Type : HDC

Contexte de l’appareil pour lequel le texte doit être mis en forme (autrement dit, pour WYSIWYG).

ptd

Type : DVTARGETDEVICE*

Plus d’informations sur l’appareil cible.

dwMode

Type : DWORD

Type d’ajustement demandé. Il peut s’agir de l’un des éléments suivants.

Valeur Signification
TXTNS_EMU
Utilisez des unités de métriques anglaises (EMU) au lieu de pixels comme unités de mesure (dans les deux sens) pour les paramètres de cette méthode.
TXTNS_FITTOCONTENT
Redimensionnez le contrôle pour qu’il s’adapte au texte entier en le mettant en forme à la largeur passée. L’objet de services de texte renvoie la hauteur du texte entier et la largeur de la ligne la plus large.

Par exemple, cette opération doit être effectuée lorsque l’utilisateur double-clique sur l’un des handles du contrôle.

TXTNS_FITTOCONTENT2
Redimensionnez le contrôle afin qu’il corresponde au contenu mis en retrait.
TXTNS_FITTOCONTENT3
Redimensionnez le contrôle afin qu’il corresponde au contenu en retrait et aux espaces blancs de fin.
TXTNS_FITTOCONTENTWSP
Redimensionnez le contrôle de façon à ce qu’il s’adapte au contenu sans fin et aux espaces blancs de fin.
TXTNS_INCLUDELASTLINE
Pour un contrôle de texte brut, incluez la hauteur du retour chariot final lors du calcul de la taille.
TXTNS_ROUNDTOLINE
Redimensionnez le contrôle pour afficher un nombre intégral de lignes (aucune ligne n’est coupée). Mettez en forme suffisamment de texte pour remplir la largeur et la hauteur passées, puis renvoyer une hauteur arrondie à la limite de ligne la plus proche.
Note La largeur et la hauteur passées et retournées correspondent au rectangle d’affichage. L’hôte doit se réajuster au rectangle client si nécessaire. Étant donné que ces valeurs représentent l’étendue de l’objet texte, elles sont d’entrée et de sortie en coordonnées HIMETRIC (chaque unité HIMETRIC est de 0,01 millimètre), et la mesure n’inclut aucun facteur de zoom. Pour une présentation du facteur de zoom, consultez TxGetExtent.
 

psizelExtent

Type : const SIZEL*

Tailles des étendues (en unités HIMETRIC) à utiliser pour le zoom.

pwidth

Type : LONG*

Largeur du raccord défini par dwMode.

pheight

Type : LONG*

Hauteur du raccord défini par dwMode.

pascent

Type : LONG*

Pour les contrôles à ligne unique, reçoit la montée (unités au-dessus de la ligne de base) des caractères dans la ligne de texte supérieure.

Valeur retournée

Type : HRESULT

Si la méthode réussit, la valeur de retour est S_OK.

Si les services de texte n’ont pas pu activer l’objet, la valeur de retour est l’un des codes HRESULT suivants. Pour plus d’informations sur les codes d’erreur COM, consultez Gestion des erreurs dans COM.

Code de retour Description
E_FAIL
Impossible de déterminer la taille correcte.
E_INVALIDARG
Un ou plusieurs arguments ne sont pas valides.
E_OUTOFMEMORY
Mémoire insuffisante.

Remarques

Les quatre premiers paramètres sont similaires aux paramètres équivalents dans ITextServices::TxDraw et fournissent les mêmes informations. Dans le cas où les lignes doivent être recalculées, TxGetNaturalSize2 utilise ces valeurs de la même manière que dans ITextServices::TxDraw.

Les paramètres pwidth et pheight sont des paramètres entrants/sortants. L’hôte transmet la largeur et la hauteur provisoires de l’étendue naturelle de l’objet texte. L’objet de services de texte compare ces valeurs à son état mis en cache actuel et, s’il est différent, recalcule les lignes. Ensuite, il calcule et retourne la taille naturelle, comme spécifié par dwMode.

Exemples

L’exemple suivant montre comment initialiser le paramètre psizelExtent pour sur un facteur de zoom de 1:1. Les points de suspension indiquent le code que vous devez fournir.


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))) 

Configuration requise

   
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
Plateforme cible Windows
En-tête textserv.h
DLL Msftedit.dll

Voir aussi

ITextServices2