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()
};
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;
    }
 
    ...
}
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...

Peut etre que j'utilise mal la fonction OnSetFont, je ne comprends pas.

Merci d'avance