This should fix a bunch of refresh bugs. ChangeLog Fix computation of subitem box, when invalidating it. --- dlls/comctl32/listview.c.V5 Sun Oct 20 12:30:23 2002 +++ dlls/comctl32/listview.c Sun Oct 20 13:12:42 2002 @@ -1075,9 +1075,12 @@ #define LISTVIEW_InvalidateSubItem(infoPtr, nItem, nSubItem) do { \ POINT Origin, Position; \ RECT rcBox; \ + assert ((infoPtr->dwStyle & LVS_TYPEMASK) == LVS_REPORT); \ LISTVIEW_GetOrigin(infoPtr, &Origin); \ LISTVIEW_GetItemOrigin(infoPtr, nItem, &Position); \ LISTVIEW_GetHeaderRect(infoPtr, nSubItem, &rcBox); \ + rcBox.top = 0; \ + rcBox.bottom = infoPtr->nItemHeight; \ OffsetRect(&rcBox, Origin.x + Position.x, Origin.y + Position.y); \ LISTVIEW_InvalidateRect(infoPtr, &rcBox); \ } while (0)