界面上很多static控件,一个一个的SetFont太麻烦响应了WM_CTLCOLOR消息,处理函数代码如下:HBRUSH CattentionDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired
if (CTLCOLOR_STATIC == nCtlColor)
{
pWnd->SetFont(&m_font);
}
return hbr;
}结果是,只有第一个static的字体设置成功,但是这个控件上的内容一直在闪动,cpu占用很高,怎么回事?
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired
if (CTLCOLOR_STATIC == nCtlColor)
{
pWnd->SetFont(&m_font);
}
return hbr;
}结果是,只有第一个static的字体设置成功,但是这个控件上的内容一直在闪动,cpu占用很高,怎么回事?
正常情况下OnCtlColor不会被调用很多次吧,就算是一直被调用,为什么只有第一个控件设置字体成功了呢?
//CFont Varible
CFont m_fArial;
//Create Arial Font
m_fArial.CreateFont(14,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,
DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"Arial");
//Get Pointer of ListCtrl
CListCtrl *m_pList = (CListCtrl*)GetDlgItem(IDC_LIST1);
//Set Font if (m_pList)
m_pList->GetHeaderCtrl()->SetFont(&m_fArial);
瞅瞅这个,说不定可以帮到你,
俺也认为应该在OnInit里设置,
CFont Font;
Font.CreateFont( 20, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,_T("Tahoma"));
GetDlgItem(IDC_BKEDIT1)->SetFont(&Font);