Allocating a Text Buffer
When Windows creates an edit control, it automatically creates a text buffer,
sets its initial size, and increases the size as necessary. The size can be up
to a predefined limit of approximately 32 kilobytes for single-line edit
controls. Because this limit can change, it is called a soft limit. An application
can set a hard limit to the buffer size by sending an
EM_SETLIMITTEXT message to the edit control. If the buffer exceeds either limit, Windows
sends the application an
EN_ERRSPACE message. An application can retrieve the current text limit by sending an
EM_GETLIMITTEXT message.
Windows typically creates an edit control buffer in a dialog box, using memory
outside the application's data segment. An application can suppress this
default allocation behavior and create the buffer from its local heap by using the
DS_LOCALEDIT style when creating the edit control. An application that uses the
DS_LOCALEDIT style is responsible for all buffer allocations. To make the
initial allocation, an application can call the
LocalAlloc function and pass the returned buffer handle to the edit control by sending
it an
EM_SETHANDLE message. To make subsequent allocations (in response to an EN_ERRSPACE
message, for example), an application should save the current buffer content (if
necessary) and obtain a new buffer as follows:
- Retrieve the handle of the memory currently allocated for the text in a
multiline edit control by sending the control an EM_GETHANDLE message.
- Free the buffer by calling the LocalFree function.
- Obtain a new buffer (and buffer handle) by calling LocalAlloc.
- Give the buffer handle to Windows by sending the control an EM_SETHANDLE message.
The EM_SETHANDLE and
EM_GETHANDLE messages apply only to multiline edit controls.
An application that uses the default allocation behavior (that is, does not
use the DS_LOCALEDIT style) must not send EM_SETHANDLE and EM_GETHANDLE messages
to the edit control.
Sending an
EM_SETHANDLE message has several side effects: it clears the undo flag (making the
EM_CANUNDO message return zero), it clears the modify flag (making the
EM_GETMODIFY message return zero), and it redraws the edit control window.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database