I agree with zdg.I think u try to avoid redraw is from 2 reason.first redraw is slow.second the slow speed lead to some flick.Logically,unless you use double buffer(such like ddraw),the redraw(or to say flick)is unavoidable.The only way is try to limit the sregion size which need to be redraw as small as possible.So only invalidate the card's orginal position and its destination position,2 rectangles,use the InvalidateRect.
2 or more retangles use the InvalidateReg not InvalidateRect
有效区域可以是包含两个矩形的更大的矩形.