我要通过一个静态文本框背景颜色随着从外界读取的数值的变化而变化。设置了一个计时器,实时刷新从外界获取的数值,当得到的数值是1的时候是一种颜色;当得到的数字是0的时候使静态文本框变成另外一种颜色!我写的代码如下,基本可以实现颜色的变化,但是每次变化完后就报错!
我定义了两个全局变量:COLORREF m_color;CBrush m_brush;
响应WM_CTLCOLOR消息如下:
HBRUSH CServo::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_SERVO_X)
{
pDC->SetBkColor(m_color);
return m_brush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
WM_TIMER消息如下:void CServo::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
UpdateData(TRUE);
…………
………………
if (response[0]==_T('0'))
{
CRect rt;
GetDlgItem(IDC_SERVO_X)->GetWindowRect(&rt);
ScreenToClient(&rt);
m_color=RGB(255,0,0);//修改颜色
m_brush.CreateSolidBrush(m_color);
InvalidateRect(&rt); }
if (response[0]==_T('1'))
{
CRect rt;
GetDlgItem(IDC_SERVO_X)->GetWindowRect(&rt);
ScreenToClient(&rt);
m_color=RGB(0,0,255);//修改颜色
m_brush.CreateSolidBrush(m_color);
InvalidateRect(&rt); } UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
读取数据不同的时候会变颜色,但是颜色变化后会出现以下报错:
输入值不同的时候颜色是变化的,但是每次都是立刻出现这个错误
我定义了两个全局变量:COLORREF m_color;CBrush m_brush;
响应WM_CTLCOLOR消息如下:
HBRUSH CServo::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_SERVO_X)
{
pDC->SetBkColor(m_color);
return m_brush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
WM_TIMER消息如下:void CServo::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
UpdateData(TRUE);
…………
………………
if (response[0]==_T('0'))
{
CRect rt;
GetDlgItem(IDC_SERVO_X)->GetWindowRect(&rt);
ScreenToClient(&rt);
m_color=RGB(255,0,0);//修改颜色
m_brush.CreateSolidBrush(m_color);
InvalidateRect(&rt); }
if (response[0]==_T('1'))
{
CRect rt;
GetDlgItem(IDC_SERVO_X)->GetWindowRect(&rt);
ScreenToClient(&rt);
m_color=RGB(0,0,255);//修改颜色
m_brush.CreateSolidBrush(m_color);
InvalidateRect(&rt); } UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
读取数据不同的时候会变颜色,但是颜色变化后会出现以下报错:
输入值不同的时候颜色是变化的,但是每次都是立刻出现这个错误
解决方案 »
- mdi中loadframe失败怎么办?
- 突然纳闷了,消息循环不是一直循环吗?为什么cpu的占用又没有呢?
- 如何防止图象被截取?怎样用 API 的方式实现用鼠标拖动控件?
- 急!!如何将一个元文件写入到磁盘文件中
- ★★★谁能提供一个类似WORD自选图形中的连线功能的算法★★★
- 我相信只有高手才能回答: 关于ATL中使用ActiveX控件
- 傻瓜的问题,有关KillTimer是否需要显示调用的问题!
- 在VS2010中使用CCoolBar
- 映射模式是怎么回事情?
- pb中的打印预览
- 含有串口控件的窗口无法正常显示
- 高分求救,程序出现错误,wincore.cpp debug Assertion Failed 991,问题找不到在哪?
m_brush.DeleteObject();