Walt, I don't know if this helps or not but I just posted a stack (enhanced scrolling list) that does some image dragging. It does not use the grab command. Basically things get initialized after receiving the dragstart message. I setup a few parameters so I know when to do autoscrolling in the field, and I set a flag (dgstart) so I know in various other handlers if I am in the middle of a drag or not. Bernd Niggemann, who did the dragimage routine, gets a "snapshot" of the selected line (after first copying it to a hidden field) and then positions it under the mouse pointer with:
set the topLeft of image sDragImage to the left of me & "," & the mouseV - sYDiff
This all happens in the dragstart handler. Basically Bernd keeps the image moving around in the mousemove handler using the same line of code (after first checking dgstart to make sure we are in the middle of a drag) while I track where we are in the list and move items around to create a "space" for the dragged image to be "dropped" into (well, thats the visual illusion anyway!).
The process ends in mouseup or mouserelease at which point I double check to make sure I am in the right place in the list to "drop" (ie. insert) the moved line and then Bernd deletes his image after that. We reset all the flags and variables in particular dgstart so we know we are not dragging anymore. So basically three handlers (dragstart, mousemove and mouseup (or mouserelease)) in that order. Frankly all of this was constructed through trial and error so I don't know if it conforms with 'accepted practice' or not, but in this case it appears to be working well. Now that I semi-undertand this I plan to go read "pinning drag and drop to the mat"
Hope it helps,
-- mark