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 |
---|---|
|
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. |
|
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. |
|
Redimensionnez le contrôle afin qu’il corresponde au contenu mis en retrait. |
|
Redimensionnez le contrôle afin qu’il corresponde au contenu en retrait et aux espaces blancs de fin. |
|
Redimensionnez le contrôle de façon à ce qu’il s’adapte au contenu sans fin et aux espaces blancs de fin. |
|
Pour un contrôle de texte brut, incluez la hauteur du retour chariot final lors du calcul de la taille. |
|
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 |
---|---|
|
Impossible de déterminer la taille correcte. |
|
Un ou plusieurs arguments ne sont pas valides. |
|
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 |