Bonjour,
Comme, c'est noté dans le titre du post, je recherche un moyen de centrer verticalemet le texte d'un CEdit.
J'ai cherché un peu partout et je n'ai rien trouvé. Donc si quelqu'un à une solution je la prend tout de suite.
Merci d'avance.
Version imprimable
Bonjour,
Comme, c'est noté dans le titre du post, je recherche un moyen de centrer verticalemet le texte d'un CEdit.
J'ai cherché un peu partout et je n'ai rien trouvé. Donc si quelqu'un à une solution je la prend tout de suite.
Merci d'avance.
salut,
à l'affichage c'est jouable en reprenant la main sur le paint ,mais en edition ce n'est pas évident...
:D
Effectivement c'est pas evident pour l'édition.
Mais c'est justement ce que je cherche.
je t'ai bricolé un truc simple :
le principe je mets le controle edit dans un autre contrôle ,l'edit etant centré dedans en hauteur ...
Code:
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 ///////////////////////////////////////////////////////////////////////////// // CNewEdit window class CNewEdit : public CButton { // Construction public: CNewEdit(); // Attributes public: CEdit m_Edit; // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CNewEdit) protected: virtual void PreSubclassWindow(); virtual BOOL PreCreateWindow(CREATESTRUCT& cs); //}}AFX_VIRTUAL // Implementation public: virtual ~CNewEdit(); // Generated message map functions protected: //{{AFX_MSG(CNewEdit) afx_msg void OnPaint(); //}}AFX_MSG DECLARE_MESSAGE_MAP() };
tu places un bouton à l'ecran à la place d'un Edit,Code:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 // NewEdit.cpp : implementation file // #include "stdafx.h" #include "samplesdi.h" #include "NewEdit.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CNewEdit CNewEdit::CNewEdit() { } CNewEdit::~CNewEdit() { } BEGIN_MESSAGE_MAP(CNewEdit, CButton) //{{AFX_MSG_MAP(CNewEdit) ON_WM_PAINT() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CNewEdit message handlers void CNewEdit::PreSubclassWindow() { // TODO: Add your specialized code here and/or call the base class CButton::PreSubclassWindow(); DWORD dwEditStyle = WS_CHILD|WS_VISIBLE| ES_AUTOHSCROLL; //|ES_MULTILINE CRect Rect; GetClientRect(&Rect); CDC *pDC=this->GetDC(); CFont *pFont=GetFont(); CFont *pOldFont=pDC->SelectObject(pFont); CSize size=pDC->GetTextExtent("essai"); pDC->SelectObject(pOldFont); this->ReleaseDC(pDC); Rect.top=((Rect.Height()-size.cy)/2); Rect.bottom=Rect.top+size.cy; Rect.left+=1; Rect.right-=2; m_Edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP , Rect, this, GetDlgCtrlID()+1); m_Edit.SetFont(pFont); } BOOL CNewEdit::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Add your specialized code here and/or call the base class return CButton::PreCreateWindow(cs); } void CNewEdit::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here //creation d'un DC en memoire . CDC memDC; memDC.CreateCompatibleDC( &dc ); CRect rcClip, rcClient; dc.GetClipBox( &rcClip ); GetClientRect(&rcClient); // seletionne un bitmap sur le DC en memoire CBitmap bitmap; bitmap.CreateCompatibleBitmap( &dc, rcClient.Width(), rcClient.Height() ); memDC.SelectObject( &bitmap ); CPen Pen(PS_SOLID ,1,RGB(0,0,0)); memDC.SelectObject(&Pen); memDC.FillRect(rcClient,CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); memDC.Rectangle(rcClient); // ecriture finale du bitmap. dc.BitBlt( rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(), &memDC, rcClip.left, rcClip.top, SRCCOPY ); }
tu associes une variable controle de type CNewEdit sur le contrôle .
note:
j'ai fais ça trés rapidement , si ça te convient à toi de paufiner ,modifier etc..
l'apparence de l'édit est a faire ,j'ai juste dessiné un rectangle ...
:D