Bonjour
J'aimerai savoir s'il est possible de connaitre l'espace utilisé par un texte dans un CStatic.
Ceci afin de redimensionner le CStatic a son contenu.
Merci
Version imprimable
Bonjour
J'aimerai savoir s'il est possible de connaitre l'espace utilisé par un texte dans un CStatic.
Ceci afin de redimensionner le CStatic a son contenu.
Merci
salut,
oui c'est possible tu veux le faire automatiquement ou à la demande ?
:D
un truc comme ça devrait suffire:
:DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 CRect Rect; MyStatic.GetClientRect(&Rect); CDC *pDC=MyStatic.GetDC(); CFont *pFont=MyStatic.GetFont(); CFont *pOldFont=pDC->SelectObject(pFont); CString str; MyStatic.GetWindowText(str); CSize size=pDC->GetTextExtent(str); pDC->SelectObject(pOldFont); MyStatic.ReleaseDC(pDC); MyStatic.SetWindowPos( NULL,0,0,size.cx+2,Rect.Height(),SWP_NOMOVE | SWP_NOZORDER); // uniquement la taille
Merci
je vais essayer.
Cela fonctionne un peu...
Sur la longueur c'est bon, il retourne bien le width du texte.
mais a une condition, que le texte ne soit pas multilignes... dans ce cas il ne
prend pas en compte les retours chariots et concidere que tout est concaténé.
Et pour la hauteur cela ne fonctionne pas du tout... il me retourne toujours
une valeur beaucoup plus grande que la hauteur de la ligne.
Dois je faire quelque chose d'autre ? car la doc sur GetTextExtent est vraiment limitée.
Je cherche de mon coté mais si quelqu'un connait la solution je suis prenneur
:lol:
Merci
ha ben c'est sûr tu n'as pas precisé que c'etait un contrôle multi-ligne...
d'ailleurs pourquoi ne pas activer l'ascenseur dans ce contexte ?
sinon le principe est le même
pour chaque ligne tu calcules la taille de la ligne:
tu cumuls la hauteur et tu ne retiens que la largeur la plus grande.
le setwindows devra utiliser ces valeurs avec quelques pixels en plus .
:D
Oui desolé de ne pas l'avoir precisé ;-)
Oui en cherchant un peu j'ai vu qu'il fallait decomposer les lignes et sommer la hauteur.
Mais ce que je trouve etrange c'est que la hauteur qu'il me retourne pour ma ligne est enorme... plus de 100px
Je continue a chercher et merci pour tout
montre ton code ...
Non autant pour moi je m'etais trompé de variable tout fonctionne tres bien ;-)
Merci pour tout