一个很棘手的有关问题,小弟我将editbox里面的字体大小和颜色改变之后,字就变得闪烁不停,怎么解决
一个很棘手的问题,我将editbox里面的字体大小和颜色改变之后,字就变得闪烁不停,如何解决啊
我将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);
}
------解决方案--------------------
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);
}
}
------解决方案--------------------
如果你想固定字体大小,init里面做,否则拖一个按钮,用CFontDialog在按钮里面改变字体,
参数建立全局类COLORREF,字体只要关联后windows会自己改变的,重载OnCtlColor是为了实时改变。用OnCtlColor跟不用不会有什么区别,不是造成闪烁的原因,除非nCtlColor你类型写错了,
NCtlColor 包含了下列值,指定了控件的类型: · CTLCOLOR_BTN 按钮控件
· CTLCOLOR_DLG 对话框
· CTLCOLOR_EDIT 编辑控件
· CTLCOLOR_LISTBOX 列表框控件
· CTLCOLOR_MSGBOX 消息框
· CTLCOLOR_SCROLLBAR 滚动条控件
· CTLCOLOR_STATIC 静态控件
我将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);
}
------解决方案--------------------
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);
}
}
------解决方案--------------------
如果你想固定字体大小,init里面做,否则拖一个按钮,用CFontDialog在按钮里面改变字体,
参数建立全局类COLORREF,字体只要关联后windows会自己改变的,重载OnCtlColor是为了实时改变。用OnCtlColor跟不用不会有什么区别,不是造成闪烁的原因,除非nCtlColor你类型写错了,
NCtlColor 包含了下列值,指定了控件的类型: · CTLCOLOR_BTN 按钮控件
· CTLCOLOR_DLG 对话框
· CTLCOLOR_EDIT 编辑控件
· CTLCOLOR_LISTBOX 列表框控件
· CTLCOLOR_MSGBOX 消息框
· CTLCOLOR_SCROLLBAR 滚动条控件
· CTLCOLOR_STATIC 静态控件