在设置对话框里已经放了一个ID号为IDC_TEXT名称为"程序员"的static控件,为什么下面的代码不能使"程序员"变成楷体,
我是照着孙鑫的视频做的,视频里执行成功,我的则不行,为什么?
CSettingDlg::CSettingDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSettingDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSettingDlg)
m_nLineWidth = 2;
//}}AFX_DATA_INIT
 m_font.CreatePointFont(200,"楷体");
 }
HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd->GetDlgCtrlID()==IDC_TEXT)

pDC->SelectObject(&m_font);
}

return hbr;
}

解决方案 »

  1.   

    我试了下,是字体名字的问题:
    把“楷体”改成“楷体_GB2312”就可以了。
    在word里看下字体的准确的名字,要完全符合才可以。
      

  2.   

    初始化的时候给static指定字体
    GetDlgItem(IDC_TEXT)->SetFont(&m_font);如果还不行可以试试:
    //设置字体
    VERIFY(m_font.CreateFont(
    55,                        // nHeight
    0,                         // nWidth
    0,                         // nEscapement
    0,                         // nOrientation
    FW_SEMIBOLD,                 // nWeight
    FALSE,                     // bItalic
    FALSE,                     // bUnderline
    0,                         // cStrikeOut
    GB2312_CHARSET,              // nCharSet
    OUT_DEFAULT_PRECIS,        // nOutPrecision
    CLIP_DEFAULT_PRECIS,       // nClipPrecision
    DEFAULT_QUALITY,           // nQuality
    DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
    "楷体_GB2312"));