Сообщения Win32 EM (поля ввода)
Материал из DRKB
Сообщения полей ввода (EM_)[править | править код]
EM_CanUndo - Определяет, может ли поле ввода ответить на сообщение EM_Undo.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Если поле ввода может ответить на сообщение EM_Undo, возвращается ненулевое значение; иначе возвращается 0.
EM_EmptyUndoBuffer - Очищает буфер отмены поля ввода.[править | править код]
Посылка полю ввода сообщения WM_SetText или EM_SetHandle вызывает автоматическую очистку буфера отмены.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_FmtLines - Добавление "мягкого" переноса строк в поле ввода при переносе слов.[править | править код]
Это сообщение не влияет на обычную последовательность конца строки CR/LF (возврат каретки, смена строки). В случае ненулевого возвращаемого значения размер текста изменился. Это сообщение относится только к многострочным полям ввода.
- WParam <> 0: строки текста с переносом слов заканчиваются символами CR/CR/LF;
- WParam = 0: любая последовательность CR/CR/LF удаляется из текста.
- LParam: Не используется.
- Возвращаемое значение: Если текст был изменен, возвращается ненулевое значение; иначе возвращается нуль.
EM_GetHandle - Возвращает дескриптор буфера содержимого поля ввода.[править | править код]
Это сообщение может посылаться только полю ввода, которое было создано со стилем DS_LocalEdit.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Дескриптор буфера памяти содержимого (текста) поля ввода.
EM_GetLine - Возвращает одну стpоку из поля ввода.[править | править код]
- WParam: Номеp строки. Нумерация строк в поле ввода начинается с нуля. Для однострочного поля ввода не используется.
- LParam: Указатель на буфер для приема строки. Два байта в начале буфера должны содержать размер буфера (тип WORD). Для ANSI это число байтов, для Unicode это число знаков. Байты в начале буфера будут перезаписаны содержимым строки. Символ конца строки (#0) не добавляется.
- Возвращаемое значение: Фактически переданное в буфер число знаков.
EM_GetLineCount - Возвращает число строк текста в поле ввода.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Число строк текста. Если текст пустой, будет возвращать 1.
EM_GetModify - Возвращает признак модификации поля ввода.[править | править код]
Признак модификации устанавливается, когда текст поля ввода изменен путем ввода нового текста или редактированием существующего, или когда полю ввода посылается сообщение EM_SetModify.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Возвращается признак модификации поля ввода. Ненулевое значение означает, что текст поля ввода изменился, а нуль - нет.
EM_GetPasswordChar - Определяет код символа, скрывающего текст в строке редактирования.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Код символа, если код равен 0, то скрывающего символа нет. Обычно равен 42 - звездочка "*".
EM_GetRect - Получает границы отрисовки поля ввода.[править | править код]
- WParam: Не используется.
- LParam: Указатель на TRect, который примет значения границ.
- Возвращаемое значение: Не используется.
EM_GetSel - Возвращает начальный и конечный индексы выделения текста в поле ввода.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: в LoWord - индекс начала, в HiWord - индекс конца.
EM_LimitText - Установка максимальной длины текста в поле ввода.[править | править код]
- WParam: Задает новое максимальное число символов. В случае нулевого значения длина почти не ограничена.
- LParam: Не используется.
- Возвращаемое значение: В случае ошибки возвращается нуль.
EM_LineFromChar - Возвращает индекс строки поля ввода, для указанного индекса в тексте.[править | править код]
- WParam: Индекс символа в тексте поля ввода (начиная с 0) или -1.
- LParam: Не используется.
- Возвращаемое значение: Если WParam = -1, возвращает индекс строки, содержащей начало выделения текста. Иначе возвращает индекс строки, содержащей индекс символа, указанный в WParam. Индекс строки начинается с 0.
EM_LineIndex - Возвращает индекс начала строки в тексте для указанного индекса строки поля ввода.[править | править код]
- WParam: Индекс строки строки, начиная с 0. Если WParam = -1, то стpока, на которой находится курсор.
- LParam: Не используется.
- Возвращаемое значение: Индекс символа в начале строки многострочного текста.
EM_LineLength - Возвращает длину строки поля ввода, по индексу в тексте.[править | править код]
- WParam: Индекс символа в тексте поля ввода, или -1.
- LParam: Не используется.
- Возвращаемое значение: Если WParam = -1, то возвращается длина строки, на которой в находится курсор. Иначе возвращается длина строки, содержащей символ по индексу из WParam. Длина строки для ANSI в байтах, для Unicode в знаках.
EM_LineScroll - Прокручивает строки поле ввода.[править | править код]
- WParam: Число знаков, прокручиваемых по горизонтали.
- LParam: Число строк, прокручиваемых по вертикали.
- Возвращаемое значение: 0 - однострочное поле ввода, иначе многострочное.
EM_ReplaceSel - Заменяет выделенный текст в поле ввода.[править | править код]
- WParam: 0 - отмена невозможна, иначе допускается отмена.
- LParam: Указатель на строку с завершающим нулем, которая заменит выделенный текст.
- Возвращаемое значение: Не используется.
EM_SetHandle - Устанавливает дескриптор буфера текста поля ввода.[править | править код]
Пеpед установкой нового дескриптора, прежний дескриптор должен быть прочитан с помощью сообщения EM_GetHandle, а затем освобожден с помощью функции LocalFree. После установки дескриптора буфер отмены очищается и признак наличия изменений сбрасывается.
- WParam: Дескриптор буфера памяти, содержащего текст для поля ввода. При необходимости, память перераспределяется автоматически.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_SetModify - Устанавливает признак модификации поля ввода.[править | править код]
- WParam: новое значение признака модификации.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_SetPasswordChar - Устанавливает символ, скрывающий текст в поле ввода.[править | править код]
Для поля ввода, созданного со стилем ES_Password.
- WParam: Код символа, отображаемого вместо текста. Если 0, то текст отображается как есть.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_SetRect - Устанавливает границы отрисовки поля ввода.[править | править код]
Для многострочного поля ввода. Текст будет переформатирован и перерисован.
- WParam: Не используется.
- LParam: Указатель на TRect, содержащий границы отрисовки.
- Возвращаемое значение: Не используется.
EM_SetRectNP - Устанавливает границы отрисовки поля ввода (без перерисовки).[править | править код]
Для многострочного поля ввода. Используйте вместо EM_SetRect, когда текст должен быть отрисован позднее.
- WParam: Не используется.
- LParam: Указатель на TRect, содержащий границы отрисовки.
- Возвращаемое значение: Не используется.
EM_SetSel - Задает границы выделения текста поля ввода.[править | править код]
- WParam: Индекс символа начала выделения.
- LParam: Индекс символа конца выделения.
- Возвращаемое значение: Не используется.
EM_SetTabStops - Устанавливает позиции табуляции поля ввода.[править | править код]
Позиция составляет одну четвертую от текущей базовой единицы ширины диалога, которая может быть получена с помощью функции GetDialogBaseUnits. Это сообщение относится только к многострочным полям ввода.
- WParam: См. описание LParam.
- LParam:
- Если WParam = 0, то позиция табуляции устанавливается через каждые 32 позиции.
- Если WParam = 1, то позиция табуляции устанавливается в каждой кратной LParam позиции.
- В других случаях LParam указывает на целочисленный массив, состоящий из WParam элементов, каждый из которых больше предыдущего и является позицией табуляции.
- Возвращаемое значение: Если были установлены все позиции табуляции, возвращается ненулевое значение. Иначе возвращается 0.
EM_SetWordBreakProc - Задает функцию переноса слов поля ввода.[править | править код]
Стандартная функция переноса слов Windows определяет начало следующего слова как первый непустой символ после ряда пробелов. Это сообщение относится только к многострочным полям ввода.
Функция переноса слов будет описываться следующим обpазом:
function WordBreakFunction(EditText: PChar; CurrentWord: Integer; EditTextCount: Integer): PChar;
Имя WordBreakFunction не является литеpалом, функция может иметь другое имя. Параметры:
- EditText - указывает на текст поля ввода.
- CurrentWord - индекс начала текущего слова в тексте.
- EditTextCount - суммарное число символов в тексте.
Функция переноса слов должна возвращать указатель на символ в начале следующего слова в тексте. Если текущее слово является последним, функция должна возвращать указатель на символ, находящийся сpазу же за последним символом в стpоке.
- WParam: Не используется.
- LParam: Адрес функции переноса слов.
- Возвращаемое значение: Не используется.
EM_Undo - Отменяет последнюю модификацию текста в поле ввода.[править | править код]
Каждое изменение текста в поле ввода записывается в буфер отмены. При нехватке памяти для создания буфера отмены будет возвращена ошибка.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: В случае успешного завершения возвращается ненулевое значение. Иначе возвращается 0 и текст в поле ввода не изменяется.