Figure 1: Internal Windows function to optimize caret redrawing
BOOL SkipDrawErase(PWND pWnd, PCARETINFO pCaret) { HRGN hRgn; int iResult; if (pWnd->hrgnUpdate == NULL) // empty update region return(FALSE); if (pWnd->hrgnUpdate == 1) // full update region return(TRUE); hRgn = CreateRectRgn(pCaret->x, pCaret->y, pCaret->x + pCaret->width, pCaret->y + pCaret->height); iResult = CombineRgn(hRgn, hRgn, pWnd->hrgnUpdate, RGN_AND); DeleteObject(hRgn); if (iResult > NULLREGION) return(TRUE); return(FALSE); }