I can't follow your code either so...
My code would work like:

1) When you add an item to the list, you also call SetLVItemlParam(listview.hwnd, item number, item number again since that is unique)
2) Call the SortListView function

And the only changes youd make,
-In ListviewSortProc, just convert the string that's returned from subitem 1 (A-Q-9 whatever) to your hand object
-Your CompareHands should return 1 as a tie, and 0 or 2 for a winner

It was magic to me at first too, fortunately you don't need to worry about how exactly it works, just have to change a couple details. It really is the best way to do this; trying to do it another way is going to be just as complicated. Sorting isn't easy to get your head around if you're not using it frequently.