Bonjour,
Est il possible de centrer verticalement le texte d'un CEdit ?
L'alignement horizontal est trivial mais je ne trouve rien en ce qui concerne l'alignement vertical.
Cordialement.
Bonjour,
Est il possible de centrer verticalement le texte d'un CEdit ?
L'alignement horizontal est trivial mais je ne trouve rien en ce qui concerne l'alignement vertical.
Cordialement.
Regarde les propriétés de ton contrôle dans le l'éditeur de resource.
salut,
l'alignement dépend de la hauteur de la fonte pas du contrôle...
donc sauf magouille visuelle je ne vois pas comment tu pourrais faire.
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
J'imagine qu'en réécrivant la fonction OnDraw dans un CEdit custom je dois pouvoir le faire mais bon bof quoi ...![]()
salut,
soit tu as un edit multiline et tu peux utiliser EM_SETRECT,
soit tu peux procéder comme ça pour un single line :
dans CMyEdit.h
dans CMyEdit.cpp:
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 class CMyEdit : public CEdit { DECLARE_DYNAMIC(CMyEdit); protected: DECLARE_MESSAGE_MAP() afx_msg void OnNcCalcSize(BOOL,NCCALCSIZE_PARAMS*); afx_msg void OnNcPaint(); LONG m_TopMargin; LONG m_BottomMargin; };
c'est juste un exemple, il reste à calculer m_TopMargin et m_BottomMargin (dans PreSubclassWindow() si ton CEdit est dans un dialog)
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 IMPLEMENT_DYNAMIC(CMyEdit,CEdit) BEGIN_MESSAGE_MAP(CMyEdit,CEdit) ON_WM_NCCALCSIZE() ON_WM_NCPAINT() END_MESSAGE_MAP void CMyEdit::OnNcCalcSize(BOOL,NCCALCSIZE_PARAMS *lpncsp) { lpncsp->rgrc[0].top+=m_TopMargin; lpncsp->rgrc[0].bottom-=m_BottomMargin; } void CMyEdit::OnNcPaint() { CWindowDC dc(this); CRect rect; GetWindowRect(rect); dc.FillSolidRect(CRect(rect.left,rect.top,rect.right,rect.top+m_TopMargin),RGB(255,255,255)); dc.FillSolidRect(CRect(rect.left,rect.bottom-m_BottomMargin,rect.right,rect.bottom),RGB(255,255,255)); }
ça ne marche pas si ton CEdit à des styles comme WS_BORDER, WS_EX_CLIENTEDGE ...
la couleur du fond est fixe (RGB(255,255,255)) et ne devrait pas l'etre ...
il y a un article sur codeguru ou codeproject sur le sujet ... à chercher
@+
Partager