Invalidate(TRUE)都干了些什么。其实,它只是间接向消息队列添加了WM_ERASEBKGND和WM_PAINT两个消息。但是,如果使用Invalidate(FALSE)的话,则只有WM_PAINT消息产生,这时是不会有任何闪烁的。
刷新窗口部分区域的办法:
RECT rc;
GetClientRect(&rc);
int xStartPos = rc.left + 20;
int yStartPos = rc.top + 20;
rc.left = xStartPos + 5* LimiterAxisIntervalWidth;
rc.top = yStartPos + 5* LimiterAxisIntervalWidth;
rc.bottom = rc.top + 6 * 8 * LimiterAxisIntervalWidth - 5*LimiterAxisIntervalWidth;
rc.right = rc.left + 6 * 8 * LimiterAxisIntervalWidth - 5 * LimiterAxisIntervalWidth;
InvalidateRect(&rc,TRUE);