我用vc做一个基于EDIT的编辑框控件,我如何根据ForeColor和BackColor属性来设定控件窗口的背景色和字体颜色啊,试了好多方法都不行,比如OnCtlColor,在OnDraw中也没用呢,这个在哪设定呢?还有怎么动态改变控件窗口的属性呢,比如该修改了Password属性后,让窗口类型添加ES_PASSWORD属性呢,MotifyStyle好像不起作用啊,希望各位能给解释一下,小弟感激不尽啦!!!!!!
解决方案 »
- 求strcpy的拷贝问题,实在搞不定,求教!
- 你们希望下一代Visual C++都具有什么功能?
- 怎么用vc win32 API函数实现获取鼠标所在位置屏幕上任意一点的坐标??
- 我的汉诺塔问题,欢迎高手指正,分数不多,穷呀
- 哪有《Windows防火墙与网络封包截获技术 》的电子版
- 如何用ADO将组合框中字符串加入数据库中对应的表的字段中?
- 指针都变掉了!
- 请问那位大虾有FTP SERVER的例程,或有SERVER的类也行。
- 怎么用typedef定义一个数组类型?
- 请问大家在做项目时是不是也用了很多别人做的类呢?
- 界面线程和工作线程
- 我的系统没有cmschart这个Activex控件??我该怎么办?
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;
}
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('*'));
这样就可以了