当在OnDraw中绘制了图形后,当拖动边框进行放大时,客户区闪动特别的历害,有不骨什么方法不让它闪呀?在Visio中拖动放大客户区时没有这种情况!

解决方案 »

  1.   

    ::UpdateWindows(GetSafeHwnd());
    试一试
      

  2.   

    在拖动过程中重复调用
    ::UpdateWindows(GetSafeHwnd());
      

  3.   

    绘图先绘在MemDC中,OnDraw中只调用BitBlt,代码我等会儿贴
      

  4.   

    代码现在不在我这儿,大致是这样:
    CBitmap m_Bitmap;
    CDC m_MemDC;
    在OnInitialUpdate中,m_MemDC.CreateCompatibleDC,再用pDC建一个Bitmap,m_MemDC选入此Bitmap,
    绘图时就绘在m_MemDC上,OnDraw中只调用BitBlt,把m_MemDC考到屏幕上
      

  5.   

    tonyzym(tony):我用你的方法绘出图形后,可以拖动放大时,还是闪呀?
    有没有更详细的代码呀?
    我是在OnInitialUpdate初始化m_memDC的,然后在OnDraw中建立一个Bitmap然后:m_memDC.SelectObject()选过内存中,挭再用m_memDC进行绘图,完成后用OnDraw传过来的pDC->Bitblt(),但是结果还是闪呀?是不是这样做呀?前面用::UpdateWindows(GetSafeHwnd())我在OnSize中调用,也不行。
      

  6.   

    应该在OnInitialUpdate初始化以及建立一个Bitmap,m_memDC.SelectObject()选过内存中:
    m_pMemDC->CreateCompatibleDC(pDC);
    m_pMemBitmap->CreateCompatibleBitmap(pDC,2500,2500);
    m_pMemDC->SelectObject(*m_pMemBitmap);
    OnDraw中只有pDC->Bitblt(),可能会好一点,你试试看。