在对话框的OnPaint()中绘图。使用LineTo、MoveTo等画图。
当别的窗口在上边移动时,图形会闪烁的很厉害。这种情况有没有解决的办法?

解决方案 »

  1.   

    看一下这个帖子:http://topic.csdn.net/u/20091012/14/2b948708-6d7b-498a-9806-a2adbd000c5d.html
    建议改动 OnEraseBkGnd 中的内容!
      

  2.   

    当然有。
    不需要整个窗口重绘。
    思路是先获得需要重绘的区域CRng,然后调用CDC::SelectClipRgn(),把这个区域选入DC中
      

  3.   

    OnPaint中直接绘图,就是用来闪烁的。
    CSDN中可以搜到一大摞双缓存解决闪烁问题的。自己找找吧。
      

  4.   

    问题解决了,谢谢大家。
      // 取画布矩形和它的DC
      CRect rect;
      CWnd *pWnd = GetDlgItem(IDC_PICTURE_LINK); 
      pWnd->GetClientRect(rect);
      CDC *pDC = pWnd->GetDC();

      // 创建内存DC
      CDC memDC;
      memDC.CreateCompatibleDC(NULL);  // 建立一个与屏幕显示兼容的位图
      CBitmap memBitmap;
      memBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());  // 将位图选入到内存显示设备中
      CBitmap *oldBitmap = memDC.SelectObject(&memBitmap);  // 在内存DC上绘图
      m_sctDraw->DrawSCT(rect, &memDC);                          // 绘图函数
      // 复制内存位图
      pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);  // 清理
      memDC.SelectObject(oldBitmap);
      memBitmap.DeleteObject();
      memDC.DeleteDC();
      ReleaseDC(pDC);