Dlg对话框闪屏解决方法

Dlg对话框闪屏
我想查询一个变量然后改变对话框上的static控件的颜色,

在timer中查询,但是这样很闪,代码如下

void CPortDlg::OnTimer(UINT nIDEvent) 
{
CRect rect1,rect2;
if (m_swi)
{
m_static1brh=CreateSolidBrush(m_redcolor);
m_static2brh=CreateSolidBrush(m_redcolor);

else
{
m_static1brh=CreateSolidBrush(m_bluecolor);
m_static2brh=CreateSolidBrush(m_bluecolor);
}
/*
CWnd *pWnd1=GetDlgItem(IDC_STATIC1);
pWnd1->GetClientRect(&rect1);
this->InvalidateRect(rect1,true);
//加这代码没反应,怎么改?

CWnd *pWnd2=GetDlgItem(IDC_STATIC2);
pWnd2->GetClientRect(&rect2);
this->InvalidateRect(rect2,true);
*/
this->Invalidate();
CDialog::OnTimer(nIDEvent);
}


应该怎么写?
如果用双缓冲,是怎么个步骤?

------解决方案--------------------
    this->Invalidate(); (有没有 this 都是  用 this 这是 对话框 不是 控件)

   CWnd *pWnd1=GetDlgItem(IDC_STATIC1);
   pWnd1->Invalidate();  这才是控件 !