Bonjour, je cherche à perdonnaliser les boites de dialogue d'une appli, et en particulier changer la police par défaut de ces boites de dialogue. Je procède en utilisant une classe CEpidDialog dérivée de CDialog dans laquelle je surcharge les fontions de base.
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 class CEpidDialog : public CDialog { // Construction public: CEpidDialog(); CEpidDialog(UINT nIDTemplate,CWnd* pParentWnd = NULL); // font used in the dialog box CFont m_FontNormal; // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CEpidDialog) public: protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: BOOL SetNormalFont(); // Generated message map functions //{{AFX_MSG(CEpidDialog) virtual BOOL OnInitDialog(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); //}}AFX_MSG DECLARE_MESSAGE_MAP() };Je veux que toutes mes dialogues qui dérivent de CEpidDialog utilisent la font m_FontNormal. Pour ça, dans le initDialog de CEpidDialog, j'appelle la fonction SetNormalFont() puis la fonction OnSetFont(&m_FontNormal). Rien ne se passe, la police n'est pas modifiée...
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 BOOL CEpidDialog::SetNormalFont() { char * FontName; int normalHeight; ... if (bResult && NULL != FontName) { TCHAR wcsFontName[MAX_PATH]; mbstowcs(wcsFontName, FontName, MAX_PATH); // Create the font used in the child dialogs // LOGFONT LogFont; // Normal memset(&LogFont, 0, sizeof(LOGFONT)); LogFont.lfHeight = normalHeight; LogFont.lfWeight = normalWeight; wcscpy(LogFont.lfFaceName, wcsFontName); m_FontNormal.CreateFontIndirect(&LogFont); delete [] FontName; } ... }
Peut etre que j'utilise mal la fonction OnSetFont, je ne comprends pas.
Merci d'avance
Partager