Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 114


.Этот текст выдепен и подготовлен для перемещения

ib 6i

Рис. 11. Окно редактирования с невыделенным и выделенным текстом

133

Управление окном редактирования, как и всех остальных элемен­тов управления, осуществляется посредством посылки окну сооб­щений.

Перед тем, как начать рассмотрение сообщений необходимо отметить, что для нормальной работы часть текста в окне редактирования должна быть выделена. Операции производятся именно с выделенной частью текста. Копирование текста в окно редактирования осуществляется от места размещения текстового курсора.

Следующие пять сообщений не имеют параметров, а их действия очевидны из их названия:

WM_COPY - выделенная часть текста копируется в Clipboard;

WM_PASTE - содержимое Clipboard'a копируется в окно редактиро­вания (данные вставляются только в том случае, если в Clipboard'e нахо­дится текст);

WM_CUT - выделенная часть текста удаляется из окна редактирова­ния и помещается в Clipboard;

WM_CLEAR - выделенная часть текста удаляется из окна редактиро­вания и не помещается в Clipboard;

WM_UNDO - отменяется последняя операция.

Для того чтобы получить границы выделения текста, необходимо ис­пользовать сообщение EM_GETSEL. Младшее слово возвращаемого значения содержит начальную, а старшее слово - конечную позицию выделения плюс 1. Другими словами,

DWORD dwPosition = SendMessage(hEditWnd, EMJ3ETSEL,

(WPARAM) 0, (LPARAM) 0); WORD wBcginPosition = LOWORD(dwPosition); WORD wEndPosition = HIWORD(dwPosition) - 1;

Если программе необходимо выделить часть текста, то она может ис­пользовать сообщение EM_SETCEL, в IParam которого необходимо указать начальную и конечную позиции выделения:

SendMessagefhEditWnd, EM^SETSEL, 0, MAKELONG(wBeginPosition, wEndPosition));

С помощью сообщения EM_REPLACESEL программа может заме­нить выделенный текст на другой:

SendMcssage(hEditWnd, EM_REPLACESEL, О, (LPARAM) pszNcwTcxt);

134

И наконец, посылка сообщения, с помощью которого приложение может скопировать в собственный буфер набранный пользователем текст, выглядит следующим образом:




Начало  Назад  Вперед



Книжный магазин