Je ne trouve rien la dessus...
Comment fait on pour alligner le texte d'un CEdit, ou CStatic ou....
dynamiquementbiensur, je ne parle pas de la propriété dans l'editeur de ressource.
Je ne trouve rien la dessus...
Comment fait on pour alligner le texte d'un CEdit, ou CStatic ou....
dynamiquementbiensur, je ne parle pas de la propriété dans l'editeur de ressource.
en modifiant le style (ES_LEFT, ES_RIGHT, ou ES_CENTER)
et en utilisant:Envoyé par nico-pyright(c)
http://c.developpez.com/faq/vc/?page=CWnd#ModifyStyle
![]()
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'etais allé dans la faqmais je n'avais pas trouvé
![]()
, et je me fais taper sur les doigts
![]()
![]()
![]()
![]()
quoi qu'il en soit, je n'arrive pas a faire fonctionner cette modification de style, pourtant ca n'a pas l'air si compliqué.
voici un extrait de mon header :
et mon code source que j'ai simplifié pour vous biensur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // Fonctions générées de la table des messages protected: DECLARE_MESSAGE_MAP() public: CEdit m_edit_test; public: afx_msg void OnBnClickedButtonAlignGauche(); public: afx_msg void OnBnClickedButtonAlignCentre(); public: afx_msg void OnBnClickedButtonAlignDrotie();
alors j'ai meme essayé
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
39
40
41
42
43 // essaiOCX1View.cpp : implémentation de la classe CessaiOCX1View // #include "stdafx.h" #include "essaiOCX1.h" #include "essaiOCX1Doc.h" #include "essaiOCX1View.h" IMPLEMENT_DYNCREATE(CessaiOCX1View, CFormView) BEGIN_MESSAGE_MAP(CessaiOCX1View, CFormView) ON_BN_CLICKED(IDC_BUTTON_ALIGN_GAUCHE, &CessaiOCX1View::OnBnClickedButtonAlignGauche) ON_BN_CLICKED(IDC_BUTTON_ALIGN_CENTRE, &CessaiOCX1View::OnBnClickedButtonAlignCentre) ON_BN_CLICKED(IDC_BUTTON_ALIGN_DROTIE, &CessaiOCX1View::OnBnClickedButtonAlignDrotie) END_MESSAGE_MAP() void CessaiOCX1View::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT1, m_edit_test); } void CessaiOCX1View::OnBnClickedButtonAlignGauche() { UpdateData(TRUE); m_edit_test.ModifyStyle(0,ES_LEFT); UpdateData(FALSE); } void CessaiOCX1View::OnBnClickedButtonAlignCentre() { UpdateData(TRUE); m_edit_test.ModifyStyle(0,ES_CENTER); UpdateData(FALSE); } void CessaiOCX1View::OnBnClickedButtonAlignDrotie() { UpdateData(TRUE); m_edit_test.ModifyStyle(0,ES_RIGHT); UpdateData(FALSE); }pour soustraire les mauvais modes a ajouter le bon, mais ca ne change rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part m_edit_test.ModifyStyle(ES_RIGHT | ES_CENTER ,ES_LEFT);![]()
j'aurai oublié de faire quelque chose?
il semblerait que le probleme soit le meme qu'avec une listbox :
le changement de certains styles affectant l'apparence ne sont pas effectifs apres la creation du control.
solution recreer un control avec le nouveau style:
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
39
40
41
42
43
44 void ModifyEditStyle(CEdit &rEdit,DWORD dwRemove,DWORD dwAdd) { rEdit.ModifyStyle(dwRemove,dwAdd); UINT nID=rEdit.GetDlgCtrlID(); CRect rect; rEdit.GetWindowRect(&rect); CWnd *pParent=rEdit.GetParent(); pParent->ScreenToClient(&rect); DWORD dwExEditStyle =rEdit.GetExStyle( ); DWORD dwEditStyle =rEdit.GetStyle( ); CString str; rEdit.GetWindowText(str); HWND hwnd=::CreateWindowEx( dwExEditStyle, TEXT("EDIT"), // Class name str, // Window text dwEditStyle, // Window style rect.left, // x coordinate of the upper-left corner rect.top, // y coordinate of the upper-left corner rect.Width(), // Width of the edit control window rect.Height(), // Height of the edit control window pParent->GetSafeHwnd(), // Window handle of parent window (HMENU)(nID), // Control identifier AfxGetInstanceHandle(), // Instance handle NULL); // Specify NULL for this parameter when // creating a control ::SendMessage(hwnd, WM_SETFONT, (WPARAM)::SendMessage(rEdit.GetSafeHwnd(), WM_GETFONT, 0, 0),TRUE); rEdit.DestroyWindow(); rEdit.SubclassWindow(hwnd); } //................ void CessaiOCX1View::OnBnClickedButtonAlignDrotie() { ModifyEditStyle( m_edit_test, ES_LEFT | ES_CENTER , ES_RIGHT); }![]()
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++.
Genial Farscape, elle a l'air carrée ta fonction dis moi, je vais de suite la tester. Merci !
Pour info, j'ai fais mes essais sous MFC 7.1 et MFC 8.0, et sous 7.1 j'avais fait le modify style dans la fonction create , mais bon ce code je ne l'ai pas sur moi, il est au boulot, je regarderai ca de plus pret lundi et vous dirai...
Partager