Выделять текст в буфер

Когда система создает элемент управления edit, он автоматически создает текст в буфер, устанавливает его исходный размер и увеличивает размер при необходимости. Размер может быть до предопределенного предела примерно 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 для управления edit.

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

Index