我把一个子CStatic做了透明:
BRUSH CUpdateUIDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  Change any attributes of the DC here
if(nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(0);
pDC->SetTextColor(RGB(128,128,128));
hbr = (HBRUSH)::GetStockObject(NULL_BRUSH);
}
// TODO:  Return a different brush if the default is not desired
return hbr;
}然后我在更新一个CStatic时对窗口进行了重绘.可有时更新的时候有闪烁.
RECT   m_rect;
::GetWindowRect(GetDlgItem(IDC_STATIC1)->GetSafeHwnd(),&m_rect);
ScreenToClient(&m_rect); 
    bool b = this->RedrawWindow(&m_rect,0,RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE);大家有没有好的办法?

解决方案 »

  1.   

    直接刷新控件好了
    GetDlgItem(IDC_STATIC1)->Invalidate();
      

  2.   

    方法很多啊,简单的就是LZ可以在Timer里面进行重绘,要不可以自己做一个类来实现,有一个好用而现成的类叫CLabel网上有得下载
      

  3.   

    闪烁问题出自RedrawWindow
    建议自己SubClass一下或SuperClass一下自己响应一下他的WM_PAINT消息