响应WM_CTLCOLOR消息,添加全局变量COLORREF m_color;HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if(pWnd == GetDlgItem(IDC_STATIC1)) pDC->SetBkColor(m_color); // TODO: Return a different brush if the default is not desired return hbr; }在OnTimer事件中用 CRect rt; GetDlgItem(IDC_STATIC1)->GetWindowRect(&rt); ScreenToClient(&rt); m_color=RGB(123,45,12);//修改颜色 InvalidateRect(&rt);
楼上意思我解释一下: m_color为全局变量 CtestDlg::OnTimer() { int flg; CRect rt; GetDlgItem(IDC_STATIC1)->GetWindowRect(&rt); ScreenToClient(&rt); if (flg ==1) {m_color=RGB(123,45,12);//修改颜色 } else if (flg ==0) { m_color=RGB(255,0,0);//修改颜色 }InvalidateRect(&rt); }HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if(pWnd == GetDlgItem(IDC_STATIC1)) pDC->SetBkColor(m_color); // TODO: Return a different brush if the default is not desired return hbr; } 这样应该就行了
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here
if(pWnd == GetDlgItem(IDC_STATIC1))
pDC->SetBkColor(m_color);
// TODO: Return a different brush if the default is not desired
return hbr;
}在OnTimer事件中用
CRect rt;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rt);
ScreenToClient(&rt);
m_color=RGB(123,45,12);//修改颜色
InvalidateRect(&rt);
在OnTimer事件中用
if(key == 1)
{
CRect rt;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rt);
ScreenToClient(&rt);
m_color=RGB(123,45,12);//修改颜色
InvalidateRect(&rt);
}
if(key == 0)
{
CRect rt;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rt);
ScreenToClient(&rt);
m_color=RGB(45,123,78);//修改颜色
InvalidateRect(&rt);
}
m_color为全局变量
CtestDlg::OnTimer()
{
int flg;
CRect rt;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rt);
ScreenToClient(&rt); if (flg ==1)
{m_color=RGB(123,45,12);//修改颜色
}
else if (flg ==0)
{
m_color=RGB(255,0,0);//修改颜色 }InvalidateRect(&rt);
}HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here
if(pWnd == GetDlgItem(IDC_STATIC1))
pDC->SetBkColor(m_color);
// TODO: Return a different brush if the default is not desired
return hbr;
}
这样应该就行了