Сообщения 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 и текст в поле ввода не изменяется.