作者:dfdzgf_542 | 来源:互联网 | 2023-09-24 03:11
我用vc做一个基于EDIT的编辑框控件,我如何根据ForeColor和BackColor属性来设定控件窗口的背景色和字体颜色啊,试了好多方法都不行,比如OnCtlColor,在OnDraw中也没用呢,
我用vc做一个基于EDIT的编辑框控件,我如何根据ForeColor和BackColor属性来设定控件窗口的背景色和字体颜色啊,试了好多方法都不行,比如OnCtlColor,在OnDraw中也没用呢,这个在哪设定呢?
还有怎么动态改变控件窗口的属性呢,比如该修改了Password属性后,让窗口类型添加ES_PASSWORD属性呢,MotifyStyle好像不起作用啊,
希望各位能给解释一下,小弟感激不尽啦!!!!!!
5 个解决方案
m_redcolor=RGB(255,0,0); // 红色
m_bluecolor=RGB(0,0,255); // 蓝色
m_textcolor=RGB(255,255,255); // 白色文本
m_redbrush.CreateSolidBrush(m_redcolor); // 红色画刷
m_bluebrush.CreateSolidBrush(m_bluecolor); // 蓝色画刷
HBRUSH CColorEditBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)//第一个编辑框
{
pDC->SetBkColor(m_redcolor); // 输入文本的的底色
pDC->SetTextColor(m_textcolor); // 输入文本的颜色
hbr = (HBRUSH) m_redbrush; // 编辑框控件的填充色
}
if (pWnd->GetDlgCtrlID() == IDC_EDIT2)//第二个编辑框
{
pDC->SetBkColor(m_bluecolor); // 输入文本的的底色
pDC->SetTextColor(m_textcolor); // 输入文本的颜色
hbr = (HBRUSH) m_bluebrush; // 编辑框控件的填充色
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
我用vc做一个基于EDIT的编辑框控件,我如何根据ForeColor和BackColor属性来设定控件窗口的背景色和字体颜色啊,试了好多方法都不行,比如OnCtlColor,在OnDraw中也没用呢,这个在哪设定呢?
响应ON_WM_CTLCOLOR()事件,在该函数中添加:
HBRUSH CXXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(pWnd->GetDlgCtrlID() == IDC_EDIT1)
{
pDC->SetTextColor(m_fgcolor);
pDC->SetBkColor(m_bgcolor);
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
m_fgcolor和m_bgcolor为CXXXXDlg类的成员变量用来保存CEdit的前景色和背景色,你改变他们的颜色值以后,只需要Invalidate(TRUE);更新一下Dialog就可以了。
-----------------------------------------------------------------
m_edit.ModifyStyle(NULL, ES_PASSWORD);
m_edit.SetPasswordChar(_T('*'));
这样就可以了