We won't cover all the messages you can send to an edit control using SendMessage, because there are quite a few of them, and several will be used in the later POPPAD1 revisions. Here's a broad overview.
These messages let you cut, copy, or clear the current selection. A user selects the text to be acted upon by using the mouse or the Shift key and a cursor key, thus highlighting the selected text in the edit control.
SendMessage (hwndEdit, WM_CUT, 0, 0L) ;
SendMessage (hwndEdit, WM_COPY, 0, 0L) ;
SendMessage (hwndEdit, WM_CLEAR, 0, 0L) ;
WM_CUT removes the current selection from the edit control and sends it to the clipboard. WM_COPY copies the selection to the clipboard but leaves it intact in the edit control. WM_CLEAR deletes the selection from the edit control without passing it to the clipboard.
You can also insert clipboard text into the edit control at the cursor position:
SendMessage (hwndEdit, WM_PASTE, 0, 0L) ;
You can obtain the starting and ending positions of the current selection:
lSelect = SendMessage (hwndEdit, EM_GETSEL, 0, 0L) ;
The low word of lSelect has the starting position. The high word has the end position plus 1.
You can select text:
SendMessage (hwndEdit, EM_SETSEL, 0, MAKELONG (wBegin, wEnd)) ;
You can also replace a current selection with other text:
SendMessage (hwndEdit, EM_REPLACESEL, 0, (LONG) lpszString) ;
For multiline edit controls, you can obtain the number of lines:
nCount = SendMessage (hwndEdit, EM_GETLINECOUNT, 0, 0L) ;
For any particular line, you can obtain an offset from the beginning of the edit buffer text:
nOffset = SendMessage (hwndEdit, EM_LINEINDEX, wLine, 0L) ;
Lines are numbered starting at 0. A wLine value of -1 returns the offset of the line containing the cursor. You obtain the length of the line from:
nOffset = SendMessage (hwndEdit, EM_LINELENGTH, wLine, 0L) ;
and copy the line itself into a buffer using:
nLength = SendMessage (hwndEdit, EM_GETLINE, wLine, lpszBuffer) ;