我将editbox里面的字体大小和颜色改变之后,字就变得闪烁不停
另外本来我的这个数字是个倒计时,,没有改字体之前数字是会变化的,可是为何改了之后就不变了呢?改变字体的代码如下,各位大侠帮忙看看了,很棘手的.................多谢了
if(pWnd   ==   &m_ctr)
{
CFont * f;
    f = new CFont;
    pDC->SetBkMode(TRANSPARENT);  
pDC->SetTextColor(RGB(251,30,0)); 
    f->CreateFont(500, // nHeight
100, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
//DEFAULT_CHARSET, // nCharSet
ANSI_CHARSET, // nCharSet
//OUT_STRING_PRECIS, // nOutPrecision
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
//CLIP_CHARACTER_PRECIS,// nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("楷体_GB2312")); // lpszFac 
//m_font.CreateFontIndirect(&lf);    
        //m_cEdit1.SetFont(&font,TRUE);   
        GetDlgItem(IDC_EDIT1)->SetFont(f);  
}

解决方案 »

  1.   

    在什么函数里调的这段代码?
    如果是onpaint之类的,把它放到其他函数中去。
      

  2.   

    HBRUSH CmfcDlg::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor )
    { if(nCtlColor==CTLCOLOR_STATIC)   
    {   

    pDC->SetBkColor(Edit_Color);
    pDC->SetTextColor(Font_Color);
    return   m_hbrDlg;//m_hbrDlg全局刷子
    }
    else   
    { return  CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);   
    }  }
      

  3.   

    OnCtlColor
    我是在这个函数里面写的
      

  4.   

    改变字体大小只需初始化的时候设置一次即可,不要放到OnCtlColor中。
      

  5.   

    如果你想固定字体大小,init里面做,否则拖一个按钮,用CFontDialog在按钮里面改变字体,
    参数建立全局类COLORREF,字体只要关联后windows会自己改变的,重载OnCtlColor是为了实时改变。用OnCtlColor跟不用不会有什么区别,不是造成闪烁的原因,除非nCtlColor你类型写错了,
    NCtlColor 包含了下列值,指定了控件的类型: · CTLCOLOR_BTN 按钮控件  
    · CTLCOLOR_DLG 对话框  
    · CTLCOLOR_EDIT 编辑控件  
    · CTLCOLOR_LISTBOX 列表框控件  
    · CTLCOLOR_MSGBOX 消息框  
    · CTLCOLOR_SCROLLBAR 滚动条控件  
    · CTLCOLOR_STATIC 静态控件