Сведения об изменении элементов управления
Элемент управления редактирования — это прямоугольное окно управления, которое обычно используется в диалоговом окне, чтобы пользователь мог вводить и изменять текст.
Элементы управления "Изменить" поддерживают как набор символов Юникода, в котором символы являются двумя байтами, так и наборами символов 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_NUМБ ER ограничивает входные данные только в элементе управления редактированием.
Стиль 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+ВВОД, чтобы вставить возврат каретки. Сведения о разрывах строк и Wordwrap см. в разделе "Обработка разрывов wordwrap и строк".
Стили визуальных элементов
Стиль ES_NOHIDESEL приводит к тому, что выделенный текст остается выделенным, если элемент управления редактирования не имеет фокуса. Без этого стиля выделенный текст теряет выделение при потере фокуса элемента управления.
По умолчанию элемент управления редактирования не имеет границы. Чтобы дать ему одно, приложение может использовать стиль окна WS_BORDER .
Чтобы использовать визуальные стили с элементами управления редактированием, приложение должно включать манифест и вызывать InitCommonControls в начале программы. Сведения о стилях визуальных элементов см. в разделе "Стили визуальных элементов". Сведения о манифестах см. в разделе "Включение визуальных стилей".
Текстовый буфер
Система сохраняет текст элемента управления в буфере и копирует его в элемент управления по мере необходимости.
В следующих разделах описывается, как система выделяет и инициализирует буфер и изменяет ее характеристики:
- Выделение текстового буфера
- Инициализация текстового буфера
- Создание буфера текста только для чтения
Выделение текстового буфера
Когда система создает элемент управления редактированием, он автоматически создает текстовый буфер, задает его начальный размер и увеличивает размер по мере необходимости. Размер может быть до предопределенного ограничения приблизительно 32 килобайта (КБ) для элементов управления редактированием в одной строке. Так как это ограничение может измениться, он называется мягким ограничением. Приложение может задать жесткое ограничение на размер буфера, отправив EM_SETLIMITTEXT сообщение в элемент управления редактирования. Если буфер превышает любое ограничение, система отправляет приложению код уведомления EN_ERRSPACE . Приложение может получить текущее ограничение текста, отправив EM_GETLIMITTEXT сообщение.
Система обычно создает буфер элемента управления редактирования в диалоговом окне с использованием памяти за пределами сегмента данных приложения. Приложение может отключить это поведение выделения по умолчанию и создать буфер из локальной кучи с помощью стиля DS_LOCALEDIT (см. статью "Стили шаблонов диалогового окна" в диалоговых окнах "О диалоговых окнах") при создании элемента управления редактирования. Приложение, использующее стиль DS_LOCALEDIT, отвечает за все выделения буферов. Чтобы сделать начальное выделение, приложение может вызвать функцию LocalAlloc и передать возвращенный дескриптор буфера в элемент управления редактирования, отправив его EM_SETHANDLE сообщение. Чтобы сделать последующие выделения (в ответ на код уведомления EN_ERRSPACE , например, приложение должно сохранить текущее содержимое буфера (при необходимости) и получить новый буфер, как показано ниже.
Чтобы сохранить текущий буфер и получить новый, выполните следующую процедуру.
- Получите дескриптор памяти, выделенной для текста в элементе управления многострочного редактирования, отправив элемент управления EM_GETHANDLE сообщение.
- Освободить буфер, вызвав функцию LocalFree .
- Получите новый буфер (и дескриптор буфера), вызвав LocalAlloc.
- Предоставьте дескриптор буфера системе, отправив элемент управления 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 для любого сообщения, предопределенная процедура окна проверка сообщения и выполняет следующие действия по умолчанию.
Message | Действие по умолчанию |
---|---|
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_GETTHUМБ | Возвращает позицию поля прокрутки в вертикальной полосе прокрутки в элементе управления многостроковым изменением. |
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 для обработки по умолчанию.