Bonjour,

je souhaite créer un label (Cstatic) dont la taille de la police diminue si le texte ne tient pas dans le rectangle d'affichage.
Donc j'ai dérivé un CStatic dont j'ai surchargé la fonction d'affichage OnPaint() comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
LOGFONT        lf;
 
 
 
GetLogFont(lf); // Get Current font properties
 
 
::GetTextExtentPoint32(pDCMem->GetSafeHdc(), csText, csText.GetLength(), &sz);
 
if ( sz.cx > pRect->Width() ){
lf.lfHeight -= 1;  // diminue font size
SetFont( &lf );
 
}
else{
}
pDCMem->DrawText(csText, pRect, dwFlags);
Ce code fonctionne bien par contre j'aimerais reaugmenter la taille au fur et a mesure que le texte diminue.

J'ai essayé de remplir le else comme ca :

else{
if (lf.lfHeight < nTailleInitial)
lf.lfHeight += 1; // augmente font size
SetFont( &lf );
}

mais j'obtiens une espece d'oscillation d'affichage.