The issue that jumps out first is that the listview is created with LVS_OWNERDATA (full virtual mode), that can't easily be used with group mode.