Сведения об изменении элементов управления

Элемент управления редактирования — это прямоугольное окно, обычно используемое в диалоговом окне, чтобы пользователь мог вводить и изменять текст.

Элементы управления "Изменить" поддерживают как набор символов Юникода, в котором символы являются двумя байтами, так и наборами символов ANSI, в которых символы являются одним байтом. Дополнительные сведения о наборах символов Юникода и ANSI см. в разделе Юникод и наборы символов.

расширенные редакторы поддерживают множество функций, недоступных в системных элементах управления редактированием. Дополнительные сведения см. в разделе Расширенные элементы управления редактированием.

В этом обзоре рассматриваются следующие разделы.

Изменение функций управления

При выборе элемента управления редактирования отображается мигающий курсор, указывающий точку вставки. Затем пользователь может ввести текст, переместить точку вставки или выбрать текст для редактирования с помощью клавиатуры или мыши. Элемент управления редактированием отправляет коды уведомлений в родительское окно в виде WM_COMMAND сообщений. Дополнительные сведения о сообщениях элемента управления редактирования см. в уведомлениях сообщений элемента управления. Родительское окно может отправлять сообщения в элемент управления редактирования в диалоговом окне, вызвав функцию SendDlgItemMessage. Некоторые сообщения также можно отправлять с помощью предопределенных макросов.

Система предоставляет как однострочные элементы управления редактирования, так и многострочные элементы управления редактированием. Элементы управления правки принадлежат классу окна EDIT.

Поле со списком — это элемент управления, который объединяет большую часть функциональных возможностей элемента управления редактированием и поля списка. В поле со списком элемент управления редактирования отображает текущий выбор, а в списке представлены параметры, которые пользователь может выбрать. Дополнительные сведения о комбинированных списках см. в разделе .

Многие разработчики используют диалоговые окна, предоставляемые в общей библиотеке диалоговых окон (Comdlg32.dll) для выполнения задач, которые в противном случае могут потребовать настраиваемых элементов управления редактированием. Сведения о распространенных диалоговых окнах см. в библиотеке общих диалоговых окон .

Изменение типов элементов управления и стилей

Отдельный элемент управления редактирования может одновременно содержать несколько стилей. Большинство разработчиков используют средства для разработки диалоговых окон, поэтому может не потребоваться явно указывать стили элементов управления редактированием. Если приложение создает элемент управления редактированием с помощью функции CreateWindow или CreateWindowEx, однако он должен указать эти стили элементов управления редактирования. Для таблицы стилей элементов управления редактированием см. раздел Стили элементов управления.

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

Многостроковый стиль

Существует два стиля линий для элементов управления редактированием. По умолчанию используется однострочный элемент управления редактирования. Приложение также может создать многостроочное элемент управления редактирования с помощью стиля ES_MULTILINE.

Стили прокрутки

Стиль ES_AUTOHSCROLL указывает элементу управления редактирования прокручивать текст по горизонтали при необходимости, когда пользователь вводит текст. Если этот стиль не указан, элемент управления редактирования не может прокручиваться по горизонтали. Для элементов управления редактирования в одной строке без ES_AUTOHSCROLLпринимаются только символы, заполняющие видимую область элемента управления. Для элементов управления многострочного редактирования без ES_AUTOHSCROLLтекст переносится на следующую строку, когда пользователь вводит больше текста, чем помещается на одной строке. Если ES_AUTOHSCROLL задано для элемента управления многострочного редактирования, элемент управления прокручивается горизонтально, когда пользователь вводит больше текста, чем может отображаться в одной строке; Текст не будет обтекаться.

ES_AUTOHSCROLL автоматически применяется к многострочному элементу управления, выровненному по левому краю, с WS_HSCROLL стилем. Другими словами, любой многострочный элемент редактирования с выравниванием по левому краю и горизонтальной полосой прокрутки автоматически прокручивается по горизонтали.

ES_AUTOHSCROLL игнорируется многострочным элементом управления редактированием, который не выровнен по левому краю. Центрированные и выровненные по правому краю элементы управления редактированием не могут быть горизонтально прокручены по горизонтали

Стиль ES_AUTOVSCROLL указывает элементу управления редактирования прокрутку текста по вертикали, когда пользователь вводит больше текста, чем может отображаться в элементе управления редактирования. Этот стиль применяется только к элементам управления многострогового редактирования. Если этот стиль не указан для элемента управления многострочного редактирования, элемент управления редактирования не принимает входные данные при вводе большего текста, чем может отображаться.

Стили выравнивания

Существует три стиля, из-за которых система выравнит текст в элементе управления редактированием. Стили ES_LEFT, ES_CENTERи ES_RIGHT определяют, выравнивается ли текст слева, в центре или вправо соответственно. Центрированные и выровненные по правому краю многострочные поля редактирования не могут иметь стиль ES_AUTOHSCROLL; то есть они не поддерживают горизонтальную прокрутку.

Хотя динамически изменить стиль выравнивания элемента управления редактированием невозможно, для работы с этим ограничением можно использовать следующие методы:

  • Создайте несколько элементов управления редактированием, по одному для каждого стиля, который требуется приложению, и переключиться между ними по мере необходимости.
  • Создайте элемент управления редактирования с требуемым стилем, так как он необходим и переключитесь на новый элемент управления.

Стили текста и ввода

Приложение может использовать стили, чтобы указать, как элемент управления редактирования отображает текст. Стиль ES_LOWERCASE приводит ко всем символам верхнего регистра, введенным в элемент управления редактирования, преобразованным в нижний регистр. Аналогичным образом стиль ES_UPPERCASE приводит к преобразованию всех строчных символов в верхний регистр.

Дополнительные сведения о наборах символов см. в разделе Юникод и наборы символов.

Стиль ES_NUMBER ограничивает ввод в элементе управления редактированием только цифрами.

Стиль ES_READONLY изменяет элемент управления редактированием на состояние только для чтения.

Стиль ES_PASSWORD отображает все символы в элементе управления редактирования в одной строке в виде звездочек. Приложение может определить другой символ для отображения с помощью сообщения EM_SETPASSWORDCHAR, как описано далее в этом разделе.

Если элемент управления редактирования находится в Comctl32.dll версии 6, черный круг является символом по умолчанию для стиля ES_PASSWORD. При редактировании элементов управления из предыдущих версий общих элементов управления символ по умолчанию является звездочкой.

Стиль ES_OEMCONVERT приводит к тому, что текст, введенный в элемент управления редактированием, преобразуется из символов Windows, заданных в набор символов OEM, а затем возвращается в набор символов Windows. Это гарантирует правильное преобразование символов, когда приложение вызывает функцию CharToOem для преобразования строки Windows, находящейся в элементе управления редактированием, в символы OEM. ES_OEMCONVERT наиболее полезно для элементов управления редактированием, содержащих имена файлов, которые будут использоваться в файловой системах, которые не поддерживают Юникод.

Для элемента управления многострочного редактирования в диалоговом окне стиль ES_WANTRETURN приводит к вставке перевода строки, когда пользователь нажимает клавишу ВВОД при вводе текста. Если этот стиль не указан, нажатие клавиши ВВОД имеет тот же эффект, что и нажатие кнопки push по умолчанию в диалоговом окне. Без использования ES_WANTRETURNпользователю приходится нажимать CTRL+ВВОД, чтобы вставить возврат каретки. С информацией о переносе слов и разрывах строк см. обработка переноса слов и разрывы строк.

Стили визуальных элементов

Стиль ES_NOHIDESEL приводит к тому, что выделенный текст остается выделенным, если элемент управления редактирования не имеет фокуса. Без этого стиля выделенный текст теряет выделение при потере фокуса элемента управления.

По умолчанию элемент управления редактирования не имеет границы. Чтобы присвоить ему этот стиль, приложение может использовать стиль окна WS_BORDER.

Чтобы использовать визуальные стили с элементами управления редактированием, приложение должно включать манифест и вызывать InitCommonControls в начале программы. См. Стили визуальных элементовдля получения информации о стилях визуальных элементов. Сведения о манифестах см. в Включение визуальных стилей.

Текстовый буфер

Система сохраняет текст элемента управления в буфере и копирует его в элемент управления по мере необходимости.

В следующих разделах описывается, как система выделяет и инициализирует буфер и изменяет ее характеристики:

Выделение текстового буфера

Когда система создает элемент управления редактированием, он автоматически создает текстовый буфер, задает его начальный размер и увеличивает размер по мере необходимости. Размер может превышать предопределенное ограничение примерно в 32 килобайта (КБ) для элементов управления редактированием в одной строке. Так как это ограничение может измениться, он называется мягким ограничением. Приложение может задать жесткое ограничение на размер буфера, отправив EM_SETLIMITTEXT сообщение в элемент управления редактирования. Если буфер превышает любое ограничение, система отправляет приложению код уведомления EN_ERRSPACE. Приложение может получить текущее ограничение текста, отправив EM_GETLIMITTEXT сообщение.

Система обычно создает буфер элемента управления редактирования в диалоговом окне с использованием памяти за пределами сегмента данных приложения. Приложение может отключить это поведение выделения по умолчанию и создать буфер из локальной кучи с помощью стиля DS_LOCALEDIT (см. статью "Стили шаблонов диалогового окна" в "О диалоговых окнах") при создании элемента управления редактирования. Приложение, использующее стиль DS_LOCALEDIT, отвечает за все выделения буферов. Чтобы сделать начальное выделение, приложение может вызвать функцию LocalAlloc и передать возвращенный дескриптор буфера в элемент управления редактированием, отправив сообщение EM_SETHANDLE. Чтобы сделать последующие выделения (в ответ на код уведомления EN_ERRSPACE, например, приложение должно сохранить текущее содержимое буфера (при необходимости) и получить новый буфер, как показано ниже.

Чтобы сохранить текущий буфер и получить новый, выполните следующую процедуру.

  1. Получите дескриптор памяти, выделенной для текста в элементе управления многострочного редактирования, отправив элемент управления EM_GETHANDLE сообщение.
  2. Освободить буфер путем вызова функции LocalFree.
  3. Получите новый буфер (и дескриптор буфера), вызвав LocalAlloc.
  4. Предоставьте дескриптор буфера системе, отправив управление сообщение EM_SETHANDLE.

Сообщения EM_SETHANDLE и EM_GETHANDLE применяются только к элементам управления многострочного редактирования.

Приложение, использующее поведение выделения по умолчанию (то есть не использует стиль DS_LOCALEDIT (см. статью "Стили шаблонов диалогового окна" в о диалоговых окнах)) не должно отправлять EM_SETHANDLE и EM_GETHANDLE сообщения в элемент управления редактирования.

Отправка сообщения EM_SETHANDLE имеет несколько побочных эффектов: он очищает флаг отмены (делая сообщение EM_CANUNDO возвращать ноль), очищает флаг изменения (делая сообщение EM_GETMODIFY возвращать ноль), а затем перерисовывает окно управления редактированием.

Инициализация текстового буфера

Приложение может инициализировать или повторно инициализировать текстовый буфер элемента управления редактирования, вызвав функцию SetDlgItemText. Приложение может получить содержимое текстового буфера, вызвав функцию GetDlgItemText.

Создание буфера текста только для чтения

Для каждого элемента управления редактированием система поддерживает флаг только для чтения, указывающий, является ли текст элемента управления чтением и записью (по умолчанию) или доступен только для чтения. Приложение может установить флаг чтения/записи или флаг только для чтения текста, отправив управляющее сообщение EM_SETREADONLY. Чтобы определить, является ли элемент управления редактированием доступен только для чтения, приложение может вызывать функцию GetWindowLong с помощью константы GWL_STYLE. Сообщение EM_SETREADONLY применяется к элементам управления как для однострочного, так и для многострочного редактирования текстов.

Изменение прямоугольника форматирования

Видимость текста элемента управления редактирования регулируется измерениями прямоугольника окна и прямоугольника форматирования. Прямоугольник окна — это клиентская область окна, содержащая элемент управления редактированием. Прямоугольник форматирования — это конструкция, поддерживаемая системой для форматирования текста, отображаемого в прямоугольнике окна. При первом отображении элемента управления редактирования два прямоугольника идентичны на экране. Приложение может сделать прямоугольник форматирования больше прямоугольника окна (тем самым ограничивая видимость текста элемента управления редактирования) или меньше прямоугольника окна (тем самым создавая дополнительное пробелы вокруг текста).

Приложение может задать координаты прямоугольника форматирования элемента управления редактирования, отправив ему сообщение EM_SETRECT. Сообщение EM_SETRECT также автоматически перерисовывает текст элемента управления редактирования. Чтобы установить координаты прямоугольника форматирования без перерисовки текста элемента управления, приложение может отправить сообщение элементу управления EM_SETRECTNP. Чтобы получить координаты прямоугольника форматирования, приложение может отправить сообщение элементу управления EM_GETRECT. Эти сообщения применяются только к многостроковым элементам управления редактирования.

Изменение сообщений уведомлений элемента управления

Пользователь выполняет запросы на редактирование с помощью клавиатуры и мыши. Система отправляет каждый запрос в родительское окно элемента управления редактирования в виде сообщения WM_COMMAND. Сообщение содержит идентификатор элемента редактирования в младшем слове параметра wParam, дескриптор элемента редактирования в параметре lParam и код уведомления элемента управления редактирования, соответствующий действию пользователя в старшем слове wParam.

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

Код уведомления Действие пользователя
EN_CHANGE Пользователь изменил текст в элементе управления редактирования. Система обновляет отображение перед отправкой этого кода уведомления (в отличие от EN_UPDATE).
EN_ERRSPACE Элемент управления редактирования не может выделить достаточно памяти для выполнения определенного запроса.
EN_HSCROLL Пользователь щелкнул горизонтальную полосу прокрутки элемента управления редактирования. Система отправляет этот код уведомления перед обновлением экрана.
EN_KILLFOCUS Пользователь выбрал другой элемент управления.
EN_MAXTEXT При вставке текста пользователь превысил указанное количество символов для элемента управления редактированием. Вставка усечена. Этот код уведомления также отправляется, если элемент управления редактирования не имеет стиля ES_AUTOHSCROLL, а количество вставляемых символов превышает ширину элемента управления редактирования или если элемент управления редактирования не имеет стиля ES_AUTOVSCROLL, а общее количество строк, которые необходимо вставить, превышает высоту элемента управления редактирования.
EN_SETFOCUS Пользователь выбрал этот элемент управления редактирования.
EN_UPDATE Пользователь изменил текст в элементе управления редактирования, и система будет отображать новый текст. Система отправляет этот код уведомления после форматирования текста, но перед его отображением, чтобы приложение может изменить размер окна управления редактированием.
EN_VSCROLL Пользователь щелкнул вертикальную полосу прокрутки элемента управления правки или прокрутил колесико мыши по элементу управления редактирования. Система отправляет этот код уведомления перед обновлением экрана.
EN_SEARCHWEB Пользователь щелкнул на пункте «Поиск в Интернете» в контекстном меню. Система отправляет это уведомление после запуска браузера.

Кроме того, система отправляет WM_CTLCOLOREDIT сообщение родительскому окну элемента управления редактирования перед рисованием элемента управления редактированием. Это сообщение содержит дескриптор контекста отображения элемента управления редактирования (DC) и дескриптор дочернего окна. Родительское окно может использовать эти дескрипторы для изменения текста и цвета фона элемента управления редактирования.

Изменение управления обработкой сообщений по умолчанию

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

Сообщение Действие по умолчанию
EM_CANUNDO Возвращает TRUE, если операция редактирования может быть отменена.
EM_CHARFROMPOS Возвращает индекс символа и индекс строки символа, ближайшего к указанной точке.
EM_EMPTYUNDOBUFFER Очищает буфер отмены и устанавливает флаг отмены, полученный сообщением EM_CANUNDO, в состояние FALSE. Система автоматически очищает флаг отмены всякий раз, когда элемент управления редактированием получает сообщение WM_SETTEXT или EM_SETHANDLE.
EM_FMTLINES Добавляет или удаляет символы мягкого переноса строки (двойной возврат каретки и перевод строки) на концах переносимых строк в многострочном поле редактирования. Он не обрабатывается элементами управления редактирования в одной строке.
EM_GETFIRSTVISIBLELINE Возвращает отсчитываемый от нуля индекс первого видимого символа в элементе управления редактирования с одной строкой или отсчитываемый от нуля индекс верхней видимой строки в элементе управления многострочного редактирования.
EM_GETHANDLE Возвращает дескриптор, определяющий буфер, содержащий текст многострочного поля управления редактированием. Он не обрабатывается элементами управления редактирования в одной строке.
EM_GETLIMITTEXT Возвращает текущее ограничение текста в символах.
EM_GETLINE Копирует символы в элементе управления редактирования с одной строкой в буфер и возвращает количество скопированных символов. В элементе управления многострочного редактирования извлекает строку текста из элемента управления и возвращает количество скопированных символов.
EM_GETLINECOUNT Возвращает количество строк в элементе управления редактирования.
EM_GETMARGINS Возвращает ширину левого и правого полей.
EM_GETMODIFY Возвращает флаг, указывающий, было ли изменено содержимое элемента управления редактированием.
EM_GETPASSWORDCHAR Возвращает символ, который элементы управления редактированием используют в сочетании со стилем ES_PASSWORD.
EM_GETRECT Возвращает координаты прямоугольника форматирования в элементе управления редактированием.
EM_GETSEL Возвращает начальные и конечные позиции символов текущего выделения в элементе управления редактирования.
EM_GETTHUMB Возвращает позицию поля прокрутки в вертикальной полосе прокрутки в элементе управления многостроковым изменением.
EM_GETWORDBREAKPROC Возвращает адрес текущей функции Wordwrap в элементе управления редактированием.
EM_LINEFROMCHAR Возвращает номер строки, начинающийся с нуля, в многострочном элементе управления редактированием, содержащий указанный индекс символа. Это сообщение представляет собой обратное сообщение для EM_LINEINDEX. Он не обрабатывается элементами управления редактирования в одной строке.
EM_LINEINDEX Возвращает символ строки в многострочном элементе управления редактированием. Это сообщение является обратным для сообщения EM_LINEFROMCHAR. Он не обрабатывается элементами управления редактирования в одной строке.
EM_LINELENGTH Возвращает длину в символах однострочного элемента управления редактирования. В многострочном элементе управления редактирование возвращает длину указанной строки в символах.
EM_LINESCROLL Прокручивает текст по вертикали в элементе управления редактированием с одной строкой или по горизонтали в многострочном элементе управления редактированием (если элемент управления имеет стиль ES_LEFT). Параметр lParam указывает количество строк для прокрутки по вертикали, начиная с текущей строки. Параметр wParam указывает количество символов для горизонтальной прокрутки, начиная с текущего символа.
EM_POSFROMCHAR Возвращает координаты указанного символа.
EM_REPLACESEL Заменяет текущий выделенный фрагмент текстом из буфера, предоставленного приложением, отправляет родительскому окну коды уведомлений EN_UPDATE и EN_CHANGE, и обновляет буфер отмены.
EM_SCROLL Прокручивает текст по вертикали в элементе управления многострочного редактирования. Это сообщение эквивалентно отправке WM_VSCROLL сообщения в элемент управления редактированием. Он не обрабатывается элементами управления редактирования в одной строке.
EM_SCROLLCARET Прокручивает текстовый курсор в поле видимости в элементе управления редактирования.
EM_SETFONT Не поддерживается.
EM_SETHANDLE Задает дескриптор памяти, используемый в качестве текстового буфера, очищает буфер отмены, сбрасывает позиции прокрутки до нуля и перерисовывает окно.
EM_SETLIMITTEXT Задает максимальное количество символов, которые пользователь может ввести в элемент управления редактирования. Для элементов управления редактированием в одной строке это значение — либо 0x7FFFFFFE, либо значение параметра wParam, в зависимости от того, какое из них меньше. Для элементов управления многостроковых правок это значение равно 1 или значению параметра wParam, в зависимости от того, что меньше.
EM_SETMARGINS Задает ширину левых и правых полей и перерисовывает элемент управления редактирования, чтобы отразить новые поля.
EM_SETMODIFY Задает или очищает флаг изменения, чтобы указать, был ли изменен элемент управления редактированием.
EM_SETPASSWORDCHAR Определяет символ, который поля ввода используют в сочетании со стилем ES_PASSWORD.
EM_SETREADONLY Задает или удаляет стиль только для чтения (ES_READONLY) в элементе управления редактированием.
EM_SETRECT Задает прямоугольник форматирования для элемента управления многострочным изменением и перерисовывает окно. Он не обрабатывается элементами управления редактирования в одной строке.
EM_SETRECTNP Задает прямоугольник форматирования для многострочного элемента управления редактированием, но не перерисовывает окно. Он не обрабатывается элементами управления редактирования в одной строке.
EM_SETSEL Выбирает диапазон символов в элементе управления редактирования, задав выбранные начальные и конечные позиции.
EM_SETTABSTOPS Задает позиции табуляции в многострочном элементе управления редактированием. Он не обрабатывается элементами управления редактирования в одной строке.
EM_SETWORDBREAKPROC Заменяет функцию Wordwrap по умолчанию на определяемую приложением функцию Wordwrap.
EM_UNDO Удаляет любой текст, который только что вставлен, или вставляет удаленные символы и устанавливает выделение на вставленный текст. При необходимости отправляет коды уведомлений EN_UPDATE и EN_CHANGE в родительское окно.
WM_CHAR Записывает символ в однострочный элемент управления редактированием и посылает коды уведомлений EN_UPDATE и EN_CHANGE родительскому окну. Записывает символ в многострочный элемент управления редактированием. Обрабатывает клавиши акселератора для стандартных функций, таких как CTRL+C для копирования и CTRL+V для вставки. В многострочных элементах управления редактированием также обрабатываются клавиши TAB и CTRL+TAB для перемещения между элементами управления в диалоговом окне и вставки табуляций в многострочные элементы управления редактирования. Использует функцию MessageBeep для незаконных символов.
WM_CLEAR Очищает текущий выбор, если таковой есть, в элементе управления редактирования. Если текущего выделения нет, удаляет символ справа от курсора. Если пользователь нажимает клавишу SHIFT, это вырезает выделение в буфер обмена или удаляет символ слева от курсора, если выделения нет. Если пользователь нажимает клавишу CTRL, это удаляет выделение или удаляет до конца строки, если выбор отсутствует.
WM_COPY Копирует текст в буфер обмена, если стиль не ES_PASSWORD, в этом случае сообщение возвращает ноль.
WM_CREATE Создает элемент управления редактированием и уведомляет родительское окно с TRUE в случае успеха или 1 в случае неудачи.
WM_CUT Вырезает выделение в буфер обмена или удаляет символ слева от курсора, если выделение отсутствует.
WM_ENABLE Приводит к повторному выводу прямоугольника в серый цвет для элементов управления редактированием в одной строке. Возвращает включенное состояние для однострочных и многострочных элементов управления редактированием.
WM_ERASEBKGND Заполняет многостроочное окно управления редактированием с текущим цветом элемента управления редактирования.
WM_GETDLGCODE Возвращает следующие значения: DLGC_WANTCHARS, DLGC_HASSETSEL и DLGC_WANTARROWS. В многострочных элементах управления редактированием он также возвращает DLGC_WANTALLKEYS. Если пользователь нажимает клавиши ALT+BACKSPACE, система также возвращает DLGC_WANTMESSAGE.
WM_GETFONT Возвращает дескриптор шрифта, используемого управлением, или NULL, если управление использует системный шрифт.
WM_GETTEXT Копирует указанное число символов в буфер и возвращает количество скопированных символов.
WM_GETTEXTLENGTH Возвращает длину текста в элементе управления редактирования в символах. Длина не включает символ null-завершения.
WM_HSCROLL Прокручивает текст в элементе управления многострочного редактирования по горизонтали и обрабатывает перемещение поля прокрутки.
WM_KEYDOWN Выполняет стандартную обработку кодов виртуальных ключей.
WM_KILLFOCUS Удаляет фокус клавиатуры окна управления редактированием, уничтожает курсор, скрывает текущий выбор и уведомляет родительское окно о том, что элемент управления редактирования потерял фокус.
WM_LBUTTONDBLCLK Очищает текущий выбор и выбирает слово под курсором. Если клавиша SHIFT нажата, выделение расширяется до слова под курсором.
WM_LBUTTONDOWN Изменяет текущую точку вставки. Если клавиша SHIFT нажата, выделение расширяется до положения курсора. В многострочных элементах управления также устанавливается таймер автоматической прокрутки, когда пользователь удерживает кнопку мыши за пределами окна многострочного элемента управления.
WM_LBUTTONUP Освобождает захват мыши и задает точку вставки текста в однострочном элементе управления редактированием. В многострочном элементе управления редактированием также останавливается таймер, установленный в сообщении WM_LBUTTONDOWN.
WM_MOUSEMOVE Изменяет текущий выбор в однострочном элементе управления редактированием, если кнопка мыши нажата. В многострочных элементах управления редактированием таймер устанавливается для автоматической прокрутки, если пользователь удерживает кнопку мыши за пределами окна многострочного элемента управления.
WM_NCCREATE Указатель на структуру CREATESTRUCT для окна. Это сообщение отправляется в сообщение WM_CREATE при первом создании окна.
WM_NCDESTROY Освобождает всю память, связанную с окном управления редактированием, включая текстовый буфер, буфер отмены, буфер табуляции и кисть выделения.
WM_PAINT Удаляет фон, заполняет окно текущим цветом окна управления редактирования, рисует границу (если таковой есть), задает шрифт и рисует любой текст, а также отображает курсор вставки текста.
WM_PASTE Вставляет текст из буфера обмена в окно элемента управления редактирования в положение курсора.
WM_SETFOCUS Задает фокус клавиатуры окна управления редактированием (отображает текущий выбор, если он скрыт и создает курсор).
WM_SETFONT Задает шрифт и при необходимости перерисовывает элемент управления редактирования.
WM_SETTEXT Копирует текст в элемент управления редактирования с одной строкой, уведомляет родительское окно о нехватке памяти, очищает буфер отмены и отправляет коды уведомлений EN_UPDATE и EN_CHANGE в родительское окно. В многостроочных элементах управления редактирования также перезаписывает строки (при необходимости) и задает позиции прокрутки.
WM_SIZE Задает размер редактируемого элемента управления, гарантируя, что размер учитывает высоту и ширину символа.
WM_SYSCHAR Возвращает TRUE, если пользователь нажимает КЛАВИШИ ALT+BACKSPACE; в противном случае не выполняет никаких действий.
WM_SYSKEYDOWN Отменяет последнее действие, если пользователь нажимает КЛАВИШИ ALT+BACKSPACE; в противном случае не выполняет никаких действий.
WM_TIMER Прокручивает текст в окне управления редактированием, если пользователь удерживает кнопку мыши за пределами многострочного окна управления редактирования.
WM_UNDO Удаляет любой текст, который был только что вставлен, или вставляет любые удаленные символы, и задает выделение на вставленный текст. При необходимости отправляет коды уведомлений EN_UPDATE и EN_CHANGE в родительское окно.
WM_VSCROLL Прокручивает многострочный элемент управления редактированием по вертикали и обрабатывает перемещение ползунка. Он не обрабатывается элементами управления редактирования в одной строке.

Предопределенная процедура окна управления редактированием передает все остальные сообщения функции DefWindowProc для обработки по умолчанию.