在一个CDialog类中有10个 IDC_STATIC 的控件,怎样可以改变它们的字体?我设置这个CDialog的窗体的Font但是里面的 静态文本控件 的字体并不改变,
在OnCtlColor中的  CWnd *pWnd->SetFont() 窗体内容闪烁。难道需要在 OnInitDialog 一个一个的使用 SetFont 吗?

解决方案 »

  1.   

    用CDialog::OnSetFont ()进行子体改动,可以该动对话框内所有的控键的子体.
    详细内容看msdn
      

  2.   

    设置单个控件的字体要用代码实现:
    在一个按钮的事件里加上:
    LOGFONT If;
    static CFont font;CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC1);
    pStatic->GetFont()->GetLogFont(&If);
    CFontDialog dlg(&If);
    //
    if(dlg.DoModal()==IDOK)
    {
    dlg.GetCurrentFont(&If);
    font.DeleteObject();
    font.CreateFontIndirect(&If);
    pStatic->SetFont(&font);
    }
      

  3.   

    void CNo2Dlg::OnSetFont(CFont* pFont) 
    {
    LOGFONT lfont;
    pFont->GetLogFont(&lfont);
    lfont.lfWeight = 900;
    lfont.lfHeight = -18; pFont->DeleteObject();
    pFont->CreateFontIndirect(&lfont);

    CDialog::OnSetFont(pFont);
    }
    不知为何关闭窗口会出异常。并且调试不到。