Je souhaite redimensionner dynamiquement un CButton en fonction de la largeur du texte qu'il contient. Y a-t-il une manière intégrée de faire ceci dans MFC, ou une manière de calculer la largeur de pixel d'un certain texte spécifié (de sorte que je puisse employer CWnd::SetWindowPos
)?Obtenir la largeur du texte dans MFC
Répondre
Vous pouvez utiliser CDC::GetTextExtent pour calculer la largeur du texte dans une police donnée. Utilisez CWnd::GetDC pour obtenir le contexte de périphérique du contrôle affichant le texte.
C'est fastidieux. Vous devez utiliser CWnd::GetFont()
sur le bouton pour obtenir la police qu'il utilise, puis utiliser le GetTextText
standard sur un objet CDC
où vous aurez sélectionné cette police. Il ressemble à
CClientDC dc(&button);
CFont * pOldFont = dc.SelectObject(button.GetFont());
... dc.GetTextExtent...
dc.SelectObject(pOldFont);
En plus de la réponse de @ demoncodemonkey, vous pouvez appeler CDC::DrawText avec le drapeau DT_CALCRECT
. De cette façon, le texte ne sera pas dessiné, mais le CRect que vous passerez à la fonction aura la largeur et la hauteur du texte à dessiner. Ceci est particulièrement utile si vous voulez dessiner du texte avec des sauts de ligne (en utilisant le drapeau DT_WORDBREAK
). Vous ne serez pas en mesure de le faire en utilisant CDC::GetTextExtent
.
CClientDC hdc(this);
GetRect.SetRect(0,0,iLabelWidth,0);
//
//To get Height of Lable in advance
//
hdc.DrawText(
TempData,
TempData.GetLength(),
GetRect,
DT_CALCRECT | DT_MODIFYSTRING | DT_WORDBREAK
);
- 1. flex réglage largeur du bouton à la largeur du texte
- 2. Obtenir la largeur du terminal en C?
- 3. Comment puis-je calculer la largeur du texte, en "points"?
- 4. SVG obtenir la largeur de l'élément de texte
- 5. Comment obtenir la largeur du bouton dans android
- 6. Augmenter la largeur de l'emphase pas avec la largeur du texte - CSS
- 7. Obtenir/définir du texte de zone de liste déroulante dans Win32 (pas MFC)
- 8. Comment obtenir la hauteur du texte avec une largeur fixe et obtenir la longueur du texte qui tient dans un cadre?
- 9. Obtenir la position, la largeur et la hauteur du graphique
- 10. MFC: meilleur moyen d'obtenir du texte à partir d'un CRichEdit?
- 11. Quelles sont les fonctions utiles pour dessiner du texte (MFC)?
- 12. Habillage Flex 3 ComboBox, limitant la largeur du texte
- 13. Comment accélérer la sortie de texte pivotée dans MFC
- 14. Matplotlib estime que la largeur du texte est incorrecte
- 15. Jquery: comment obtenir la largeur du texte à l'intérieur de textarea
- 16. Obtenir la largeur de ComboBoxItem
- 17. Mesure de la largeur du texte en Qt
- 18. Comment calculer la hauteur du texte (largeur fixe)?
- 19. CSS, remplir toute la largeur div avec du texte
- 20. Comment obtenir la largeur d'un TextView?
- 21. Comment forcer du texte dans une largeur spécifique?
- 22. obtenir la largeur actuelle du formulaire html en utilisant javascript
- 23. Comment obtenir le FolderPath dans l'application MFC
- 24. CSS obtenir la largeur du nœud parent .... sans expressions
- 25. obtenir la longueur/largeur de la valeur dans un facteur
- 26. Comment obtenir AM/PM dans la date et l'heure du système dans MFC (VC++)?
- 27. Obtenir Cursors.AppStarting dans Win32 ou MFC?
- 28. Définir la largeur du bouton dans Android
- 29. Affichage du texte dans la colonne correcte
- 30. TextField multiline + wrap obtenir la hauteur du texte
Existe-t-il une différence de performance entre 'GetTextExtent' et' DrawText'? – Richard