There is no straightforward way to get the current selection in a listview control, that's how the Windows API works and it is because several items can be selected in any order. So you need to iterate through every item and call LstView_GetSelectedState to find the one/s that is/are selected.
As for detecting if the current dp is dynamic, I'll see into that but that won't be for the next update, sorry