Since I thought it would be interesting and I wanted to test out an implementation using templates (somewhat inspired by WithDropList) I've now written a test app that demonstrates what I'd like to achieve and shows two methods of implementing drag-drop between controls using GetData/SetData.
My real-world app obviously requires a more complicated implementation than this but the method I use is identical.
Written for 612-dev-3 and only tested on XP. Should compile with GCC but one method won't work in Linux (which is the whole problem ).
p.s. Sorry for having all the function bodies in the headers. I can't get MSVC8 to link templated classes with the body outside the class and I'm too lazy to fix it.