关于控件的颜色问题 我现在想实现的是,在初始话的时候,编辑框不添加背景颜色,但是当编辑框里输入非法数据时,弹出错误信息之后,让它背景色变红。网上的大部分都是初始化的颜色添加,写在OnCtlColor事件里,但是如果是上面写的这种情况,怎么处理?欢迎高手指教~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在OnCtlColor事件中添加如下代码,可以改变编辑控件的背景色.例如1. 检查是否是要改变的控件. pWnd->GetDlgCtrlID() == 控件ID名.2. 创建一个背景色. COLORREF backColor = RGB(216, 231, 252);3. 设置背景为透明色. pDC->SetBkMode(TRANSPARENT); 4. 最后返回背景刷子. return CreateSolidBrush(backColor); 参考下下面这段代码吧,之前我用过的:................................................................HBRUSH CVdserverDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC hereif(nCtlColor==CTLCOLOR_LISTBOX){//pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(0,0,0));pDC->SetBkColor(RGB(233,233,220));HBRUSH b=CreateSolidBrush(RGB(233,233,220));return b;}else if(nCtlColor==CTLCOLOR_SCROLLBAR){pDC->SetTextColor(RGB(0,0,0));HBRUSH b=CreateSolidBrush(RGB(200,210,225));return b;}else if(nCtlColor==CTLCOLOR_EDIT){pDC->SetTextColor(RGB(0,0,0));HBRUSH b=CreateSolidBrush(RGB(200,210,225));return b;}else if(nCtlColor==CTLCOLOR_STATIC){pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(0,0,0));HBRUSH b=CreateSolidBrush(RGB(200,210,225));return b;}else if(nCtlColor==CTLCOLOR_DLG){pDC->SetTextColor(RGB(0,0,0));HBRUSH b=CreateSolidBrush(RGB(200,210,225));return b;}return hbr;} 可以先设置一个全局变量 BOOL m_colorchange;if ((pWnd->GetDlgCtrlID() == IDC_STATIC_STATUS)){ if (m_colorchange) { pDC->SetTextColor(RGB(0,255,0)); } else { pDC->SetTextColor(RGB(0,0,0)); } pDC->SetBkMode(TRANSPARENT); } 求堆栈法八连通域图像区域标记源码 关于CFileDialog中的缓冲区的问题 VC工作区和工程的意义和关系 高手,请教!关于MFC中文本文件的读取操作。 VC++6.0中的EDIT BOX控件显示字符有限制 我在debug下编译没问题的程序,怎么到release下就出错了呢 请问VC++中的关于象素显示的函数是什么? 要想编译的VC应用程序在没有安装VC的机器上运行,应该在VC编译时加上什么选项? GetSystemMetrics()得到的是什么 请问哪里可以下载objectARX? 永久浮动CdialogBar老是出错 这个vc++怎么样运行源代码
例如
1. 检查是否是要改变的控件.
pWnd->GetDlgCtrlID() == 控件ID名.
2. 创建一个背景色.
COLORREF backColor = RGB(216, 231, 252);
3. 设置背景为透明色.
pDC->SetBkMode(TRANSPARENT);
4. 最后返回背景刷子.
return CreateSolidBrush(backColor);
................................................................HBRUSH CVdserverDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC hereif(nCtlColor==CTLCOLOR_LISTBOX)
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)
{
pDC->SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}
else if(nCtlColor==CTLCOLOR_DLG)
{
pDC->SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}
return hbr;
}
BOOL m_colorchange;
if ((pWnd->GetDlgCtrlID() == IDC_STATIC_STATUS))
{
if (m_colorchange)
{
pDC->SetTextColor(RGB(0,255,0));
}
else
{
pDC->SetTextColor(RGB(0,0,0));
}
pDC->SetBkMode(TRANSPARENT);
}