hi again, im back with a working proof of concept:
image:
http://www.convivea.com/capture.jpgDownload:
http://www.convivea.com/download/ucListView2.5.chip.2011.6.09.rarNew:
GroupHeaderText: Set Text and Get Text work on Win 7 / Vista / XP. Unicode works.
note: use the text box next to the "Set Group 1" button to set your own text as the Group 1 header. If it is blank, it will use "Testing 1: & Chinese Unicode".
FilterItems: Works in Group Mode or Single List mode (very cool! try it

)
Also, GroupMode filter works on Win 7, Vista, XP both Service Pack 3 and Service Pack 2 (check for COM CNTRL 6.0, if not, it will default the old trick of changing the text to white/white. this Mode is for XP service pack 2 or less.)
.SelectedItem : To provide a similar feature as the VB6 ListView control, I added a .SelectedItem property (Long, returns Item Index, not a reference to a ListViewItem). Try double clicking a list item (or right clicking as well)
Few other tweaks here and there (like GroupAdd() allows Collapsible and IndexOrder parameters).
Known Issues:
Adding new items while the list is filtered does not properly auto-update the filtered listview. The ItemAdd function need to be updated.
FilterItems with Unicode probably does not work yet.
image2:
http://www.convivea.com/capture2.jpghere you can see both FilterItems modes (work the same on Win7/Vista/XP), Set Header Text on the left, .SelectedItem on the right.
EDIT: I have found another (and better) work around to the Windows XP Set GroupHeader Text bug:
Public Property Let GroupHeaderText(ByVal GroupID As Long, newText As String)
'ADDED BY CHIP!
If m_hListView Then
Dim group As LVGROUP_lp
Dim lR As Long
Me.FreezePaint True
If pIsXP = True Then ' WINDOWS XP WORK AROUND
'THIS WORKS BUT A NEWER WORK AROUND WAS FOUND
'Dim x As Long
'Dim aGroups() As Long
'ReDim aGroups(0 To Me.Count - 1) As Long
'For x = 0 To Me.Count - 1
' aGroups(x) = Me.ItemGroup(x)
'Next
'Me.GroupRemove GroupID
'
'Me.GroupAdd GroupID, newText, , , , , GroupID
'
'For x = 0 To Me.Count - 1
'
' If aGroups(x) = GroupID Then
'
' Me.ItemGroup(x) = GroupID
'
' End If
'Next
'NEW work around found: http://users.skynet.be/oleole/Listview_grouping_feature.htm
'Discusses the BUG with LVM_SETGROUPINFO
With group
.cbSize = Len(group)
.mask = LVGF_HEADER Or LVGF_GROUPID
.pszHeader = StrPtr(newText)
.iGroupId = -100
End With
lR = SendMessageLong(m_hListView, LVM_SETGROUPINFO, GroupID, VarPtr(group))
With group
.mask = LVGF_GROUPID
.iGroupId = GroupID
End With
lR = SendMessageLong(m_hListView, LVM_SETGROUPINFO, -100, VarPtr(group))
Else
With group
.cbSize = Len(group)
.mask = LVGF_HEADER
.pszHeader = StrPtr(newText)
End With
lR = SendMessageLong(m_hListView, LVM_SETGROUPINFO, GroupID, VarPtr(group))
End If
Me.FreezePaint False
End If
End Property