我写的ATL控件中需用程序控制控件的涮新,虽然我已采用了双缓存方法,但我在调用::InvalidateRect函数后银幕还是有闪烁现象(感觉是由于父窗体重绘引起的)。请问各位我该如何解决。谢谢

解决方案 »

  1.   

    我是这样调用的
    ::GetClientRect( m_hWndCD , &rc);
    ::InvalidateRect(m_hWndCD , &rc , FALSE);
      

  2.   

    应该不是你的窗口的问题,可能是父窗口重画了(检查父窗口的WM_ERASEBKGND)
      

  3.   

    把重绘背景的函数重载了:
    OnEraseBkgnd(CDC* pDC) 
    {
    return TRUE;
    //return CWnd::OnEraseBkgnd(pDC);//把系统原来的这条语句注释掉。

      

  4.   

    I_Love_CPP(我爱C++)你好。
    我是写的ATL控件,他的消息响应函数是这样的
    LRESULT CViewText::OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        return 0;
    }
    我如何屏蔽父类的OnEraseBkgnd动作。
      

  5.   

    InvalidateRect
    第二个参数设为FALSE,
    就可以了,
      

  6.   

    InvalidateRect
    第二个参数设为FALSE,
    就可以屏蔽父类的OnEraseBkgnd动作
      

  7.   

    重绘时我是这样调用的::InvalidateRect(m_hWndCD , &rc , FALSE);