Bonjour à tous!
Je vais avoir besoin des champions sur ce coup là.
Je créé dynamiquement des objets graphiques, comme des CEdit et des CRichEdit
Cependant, là où ce code marche très bien pour le redimensionnement des CEdit, il foire totalement pour les CRichEdit, mais je ne sais absolument pas pourquoi.
J'ai l'impression que l'objet CRichEdit inclus une bordure qui, lors du redimensionnement, donne un résultat débile.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 void CInPlaceEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { CEditEx::OnChar(nChar, nRepCnt, nFlags); // Resize edit control if needed // Get text extent CString str; GetWindowText(str); CWindowDC dc(this); CFont *pFont = GetParent()->GetFont(); CFont *pFontDC = dc.SelectObject( pFont ); CSize size = dc.GetTextExtent( str ); dc.SelectObject( pFontDC ); size.cx += 5; // add some extra buffer // Get client rect CRect rect, parentrect; GetClientRect( &rect ); GetParent()->GetClientRect( &parentrect ); // Transform rect to parent coordinates ClientToScreen( &rect ); GetParent()->ScreenToClient( &rect ); // Check whether control needs to be resized // and whether there is space to grow if( size.cx > rect.Width() ) { if( size.cx + rect.left < parentrect.right ) rect.right = rect.left + size.cx; else rect.right = parentrect.right; MoveWindow( &rect ); } }
De plus, il est possible que le soucis vienne de l'apparition des scrolls bar dans le CRichEdit.
Je ne sais pas si je suis clair, mais pour faire simple, je voudrais que la taille de mon CRichEdit s'adapte à la taille du contenu texte.
Merci d'avance
Partager