Эти сообщения позволяют вам удалять, копировать или очищать текущую выделенную часть текста. Пользователь выделяет текст для обработки, используя мышь или клавишу <Shift> с нужной клавишей управления курсором, выбранный текст подсвечивается в окне редактирования:
SendMessage(hwndEdit, WM_CUT, 0, 0);
SendMessage(hwndEdit, WM_COPY, 0, 0);
SendMessage(hwndEdit, WM_CLEAR, 0, 0);
Сообщение WM_CUT удаляет выделенный текст из окна редактирования и посылает его в папку обмена.
Сообщение WM_COPY копирует выделенный текст в папку обмена, оставляя его неизменным в окнередактирования. Сообщение WM_CLEAR удаляет выделенный текст из окна редактирования без копирования его в папку обмена.
Вы также можете вставить текст из папки обмена в месте, соответствующем позиции курсора в окне редактирования:
SendMessage(hwndEdit, WM_PASTE, 0, 0);
Вы можете получить начальное и конечное положения текущего выделения:
SendMessage(hwndEdit, EM_GETSEL,(WPARAM) &iStart,(LPARAM) &iEnd);
Конечным положением фактически является положение последнего выделенного символа плюс 1.
Вы можете выделить текст:
|
|
SendMessage(hwndEdit, EM_SETSEL, iStart, iEnd);
Вы также можете заменить текущий выделенный текст другим текстом:
SendMessage(hwndEdit, EM_REPLACESEL, 0,(LPARAM) szString);
Для многострочных окон редактирования вы можете получить число строк:
iCount = SendMessage(hwndEdit, EM_GETLINECOUNT, 0, 0);
Для любой отдельной строки вы можете получить смещение текста от начала буфера редактирования:
iOffset = SendMessage(hwndEdit, EM_LINEINDEX, iLine, 0);
Строки нумеруются, начиная с 0. При значении iLine равном —1 функция возвращает смещение строки, содержащей курсор. Длину строки можно получить из:
iLength = SendMessage(hwndEdit, EM_LINELENGTH, iLine, 0);
и копировать саму строку в буфер можно таким образом:
iLength = SendMessage(hwndEdit, EM_GETLINE, iLine,(LPARAM) szBuffer);