An application sends an EM_GETSEL message to get the starting and ending character positions of the current selection in an edit control.
EM_GETSEL wParam = (WPARAM) (LPDWORD) lpdwStart; // receives starting position lParam = (LPARAM) (LPDWORD) lpdwEnd; // receives ending position
The return value is a zero-based 32-bit value with the starting position of the selection in the low-order word and the position of the first character after the last selected character in the high-order word. If either of these values exceeds 65, 535, the return value is -1.
In a rich edit control, if the selection is not entirely contained in the first 64K, use the message EM_EXGETSEL.