Edit Control (Windows Controls)

This section contains information about the programming elements used with edit controls. An edit control is a rectangular control window typically used in a dialog box to permit the user to enter and edit text by typing on the keyboard.

Overviews

Topic Contents
About Edit Controls An edit control is a rectangular control window typically used in a dialog box to enable the user to enter and edit text.
Edit Control Text Operations The system automatically processes all user-initiated text operations and notifies the application when the operations are completed.
Using Edit Controls Edit controls are typically used in dialog boxes, but you can use them in the client area of a standard window as well. Single-line edit controls are useful for retrieving a single string from the user. Multiline edit controls make it easy for your application to implement most of the features of a simple word processor.

Functions

Topic Contents
EditWordBreakProc An application-defined callback function used with the EM_SETWORDBREAKPROC message. A multiline edit control or a rich edit control calls an EditWordBreakProc function to break a line of text.
The EDITWORDBREAKPROC type defines a pointer to this callback function. EditWordBreakProc is a placeholder for the application-defined function name.

Macros

Topic Contents
Edit_CanUndo Determines whether there are any actions in the undo queue of an edit or rich edit control. You can use this macro or send the EM_CANUNDO message explicitly.
Edit_EmptyUndoBuffer Resets the undo flag of an edit or rich edit control. The undo flag is set whenever an operation within the edit control can be undone. You can use this macro or send the EM_EMPTYUNDOBUFFER message explicitly.
Edit_Enable Enables or disables an edit control.
Edit_FmtLines Sets a flag that determines whether text retrieved from a multiline edit control includes soft line-break characters. A soft line break consists of two carriage returns and a line feed and is inserted at the end of a line that is broken because of wordwrapping. You can use this macro or send the EM_FMTLINES message explicitly.
Edit_GetCaretIndex Gets the zero-based index of the position of the caret in an edit control. You can use this macro or send the EM_GETCARETINDEX message explicitly.
Edit_GetCueBannerText Gets the text that is displayed as a textual cue, or tip, in an edit control. You can use this macro or send the EM_GETCUEBANNER message explicitly.
Edit_GetEndOfLine Gets the end-of-line character for a specified edit control. Use this macro or send the EM_GETENDOFLINE message explicitly.
Edit_GetExtendedStyle Gets the extended style for a specified edit control. Use this macro or send the EM_GETEXTENDEDSTYLE message explicitly.
Edit_GetFirstVisibleLine Gets the index of the uppermost visible line in a multiline edit or rich edit control. You can use this macro or send the EM_GETFIRSTVISIBLELINE message explicitly.
Edit_GetHandle Gets a handle to the memory currently allocated for the text of a multiline edit control. You can use this macro or send the EM_GETHANDLE message explicitly.
Edit_GetHilite Not implemented.
Edit_GetLine Retrieves a line of text from an edit or rich edit control. You can use this macro or send the EM_GETLINE message explicitly.
Edit_GetLineCount Gets the number of lines in the text of an edit control. You can use this macro or send the EM_GETLINECOUNT message explicitly.
Edit_GetModify Gets the state of an edit or rich edit control's modification flag. The flag indicates whether the contents of the control have been modified. You can use this macro or send the EM_GETMODIFY message explicitly.
Edit_GetPasswordChar Gets the password character for an edit or rich edit control. You can use this macro or send the EM_GETPASSWORDCHAR message explicitly.
Edit_GetRect Gets the formatting rectangle of an edit control. You can use this macro or send the EM_GETRECT message explicitly.
Edit_GetSel Gets the starting and ending character positions of the current selection in an edit or rich edit control. You can use this macro or send the EM_GETSEL message explicitly.
Edit_GetText Gets the text of an edit control.
Edit_GetTextLength Gets the number of characters in the text of an edit control.
Edit_GetWordBreakProc Retrieves the address of an edit or rich edit control's Wordwrap function. You can use this macro or send the EM_GETWORDBREAKPROC message explicitly.
Edit_GetZoom Gets the current zoom ratio, which is always between 1/64 and 64. You can use this macro or send the EM_GETZOOM message explicitly.
Edit_HideBalloonTip Hides any balloon tip associated with an edit control. You can use this macro or send the EM_HIDEBALLOONTIP message explicitly.
Edit_LimitText Limits the length of text that can be entered into an edit control. You can use this macro or send the EM_LIMITTEXT message explicitly.
Edit_LineFromChar Gets the index of the line that contains the specified character index in a multiline edit or rich edit control. You can use this macro or send the EM_LINEFROMCHAR message explicitly.
Edit_LineIndex Gets the character index of the first character of a specified line in a multiline edit or rich edit control. You can use this macro or send the EM_LINEINDEX message explicitly.
Edit_LineLength Retrieves the length, in characters, of a line in an edit or rich edit control. You can use this macro or send the EM_LINELENGTH message explicitly.
Edit_NoSetFocus Intended for internal use; not recommended for use in applications.
Prevents a single-line edit control from receiving keyboard focus. You can use this macro or send the EM_NOSETFOCUS message explicitly.
Edit_ReplaceSel Replaces the selected text in an edit control or a rich edit control with the specified text. You can use this macro or send the EM_REPLACESEL message explicitly.
Edit_Scroll Scrolls the text vertically in a multiline edit or rich edit control. You can use this macro or send the EM_SCROLL message explicitly.
Edit_ScrollCaret Scrolls the caret into view in an edit or rich edit control. You can use this macro or send the EM_SCROLLCARET message explicitly.
Edit_SetCaretIndex Sets the zero-based index of the position of the caret in an edit control. You can use this macro or send the EM_SETCARETINDEX message explicitly.
Edit_SetCueBannerText Sets the text that is displayed as the textual cue, or tip, for an edit control. You can use this macro or send the EM_SETCUEBANNER message explicitly.
Edit_SetCueBannerTextFocused Sets the text that is displayed as the textual cue, or tip, for an edit control. You can use this macro or send the EM_SETCUEBANNER message explicitly.
Edit_SetEndOfLine Sets the end-of-line character for a specified edit control. Use this macro or send the EM_SETENDOFLINE message explicitly.
Edit_SetExtendedStyle Sets the extended style for a specified edit control. Use this macro or send the EM_SETEXTENDEDSTYLE message explicitly.
Edit_SetHandle Sets the handle of the memory that will be used by a multiline edit control. You can use this macro or send the EM_SETHANDLE message explicitly.
Edit_SetHilite Not implemented.
Edit_SetModify Sets or clears the modification flag for an edit control. The modification flag indicates whether the text within the edit control has been modified. You can use this macro or send the EM_SETMODIFY message explicitly.
Edit_SetPasswordChar Sets or removes the password character for an edit or rich edit control. When a password character is set, that character is displayed in place of the characters typed by the user. You can use this macro or send the EM_SETPASSWORDCHAR message explicitly.
Edit_SetReadOnly Sets or removes the read-only style (ES_READONLY) of an edit or rich edit control. You can use this macro or send the EM_SETREADONLY message explicitly.
Edit_SetRect Sets the formatting rectangle of an edit control. You can use this macro or send the EM_SETRECT message explicitly.
Edit_SetRectNoPaint Sets the formatting rectangle of a multiline edit control. This macro is equivalent to Edit_SetRect, except that it does not redraw the edit control window. You can use this macro or send the EM_SETRECTNP message explicitly.
Edit_SetSel Selects a range of characters in an edit or rich edit control. You can use this macro or send the EM_SETSEL message explicitly.
Edit_SetTabStops Sets the tab stops in a multiline edit or rich edit control. When text is copied to the control, any tab character in the text causes space to be generated up to the next tab stop. You can use this macro or send the EM_SETTABSTOPS message explicitly.
Edit_SetText Sets the text of an edit control.
Edit_SetWordBreakProc Replaces an edit control's default Wordwrap function with an application-defined Wordwrap function. You can use this macro or send the EM_SETWORDBREAKPROC message explicitly.
Edit_SetZoom Sets the zoom ratio anywhere between 1/64 and 64. You can use this macro or send the EM_SETZOOM message explicitly.
Edit_ShowBalloonTip Displays a balloon tip associated with an edit control. You can use this macro or send the EM_SHOWBALLOONTIP message explicitly.
Edit_TakeFocus Intended for internal use; not recommended for use in applications.
Forces a single-line edit control to receive keyboard focus. You can use this macro or send the EM_TAKEFOCUS message explicitly.
Edit_Undo Undoes the last operation in the undo queue of an edit or rich edit control. You can use this macro or send the EM_UNDO message explicitly.

Messages

Topic Contents
EM_CANUNDO Determines whether there are any actions in an edit control's undo queue. You can send this message to either an edit control or a rich edit control.
EM_CHARFROMPOS Gets information about the character closest to a specified point in the client area of an edit control. You can send this message to either an edit control or a rich edit control.
EM_EMPTYUNDOBUFFER Resets the undo flag of an edit control. The undo flag is set whenever an operation within the edit control can be undone. You can send this message to either an edit control or a rich edit control.
EM_FMTLINES Sets a flag that determines whether a multiline edit control includes soft line-break characters. A soft line break consists of two carriage returns and a line feed and is inserted at the end of a line that is broken because of wordwrapping.
EM_GETCARETINDEX Gets the zero-based index of the position of the caret in an edit control.
EM_GETCUEBANNER Gets the text that is displayed as the textual cue, or tip, in an edit control.
EM_GETENDOFLINE Gets the end-of-line character for a specified edit control. You can send this message explicitly or by using the Edit_GetEndOfLine macro.
EM_GETEXTENDEDSTYLE Gets the extended style for an edit control. Send this message explicitly or by using the Edit_GetExtendedStyle macro.
EM_GETFIRSTVISIBLELINE Gets the zero-based index of the uppermost visible line in a multiline edit control. You can send this message to either an edit control or a rich edit control.
EM_GETHANDLE Gets a handle of the memory currently allocated for a multiline edit control's text.
EM_GETHILITE Not implemented.
EM_GETIMESTATUS Gets a set of status flags that indicate how the edit control interacts with the Input Method Editor (IME).
EM_GETLIMITTEXT Gets the current text limit for an edit control. You can send this message to either an edit control or a rich edit control.
EM_GETLINE Copies a line of text from an edit control and places it in a specified buffer. You can send this message to either an edit control or a rich edit control.
EM_GETLINECOUNT Gets the number of lines in a multiline edit control. You can send this message to either an edit control or a rich edit control.
EM_GETMARGINS Gets the widths of the left and right margins for an edit control.
EM_GETMODIFY Gets the state of an edit control's modification flag. The flag indicates whether the contents of the edit control have been modified. You can send this message to either an edit control or a rich edit control.
EM_GETPASSWORDCHAR Gets the password character that an edit control displays when the user enters text. You can send this message to either an edit control or a rich edit control.
EM_GETRECT Gets the formatting rectangle of an edit control. The formatting rectangle is the limiting rectangle into which the control draws the text. The limiting rectangle is independent of the size of the edit-control window. You can send this message to either an edit control or a rich edit control.
EM_GETSEL Gets the starting and ending character positions (in TCHARs) of the current selection in an edit control. You can send this message to either an edit control or a rich edit control.
EM_GETTHUMB Gets the position of the scroll box (thumb) in the vertical scroll bar of a multiline edit control. You can send this message to either an edit control or a rich edit control.
EM_GETWORDBREAKPROC Gets the address of the current Wordwrap function. You can send this message to either an edit control or a rich edit control.
EM_GETZOOM Gets the current zoom ratio, which is always between 1/64 and 64. You can send this message to either an edit control or a rich edit control. You can send this message explicitly or by using the Edit_GetZoom macro.
EM_HIDEBALLOONTIP Hides any balloon tip associated with an edit control.
EM_LIMITTEXT Sets the text limit of an edit control. The text limit is the maximum amount of text, in TCHARs, that the user can type into the edit control. You can send this message to either an edit control or a rich edit control.
For edit controls and Microsoft Rich Edit 1.0, bytes are used. For Microsoft Rich Edit 2.0 and later, characters are used.
EM_LINEFROMCHAR Gets the index of the line that contains the specified character index in a multiline edit control. A character index is the zero-based index of the character from the beginning of the edit control. You can send this message to either an edit control or a rich edit control.
EM_LINEINDEX Gets the character index of the first character of a specified line in a multiline edit control. A character index is the zero-based index of the character from the beginning of the edit control. You can send this message to either an edit control or a rich edit control.
EM_LINELENGTH Retrieves the length, in characters, of a line in an edit control. You can send this message to either an edit control or a rich edit control.
EM_LINESCROLL Scrolls the text in a multiline edit control.
EM_NOSETFOCUS Intended for internal use; not recommended for use in applications.
Prevents a single-line edit control from receiving keyboard focus. You can send this message explicitly or by using the Edit_NoSetFocus macro.
EM_POSFROMCHAR Retrieves the client area coordinates of a specified character in an edit control. You can send this message to either an edit control or a rich edit control.
EM_REPLACESEL Replaces the selected text in an edit control or a rich edit control with the specified text.
EM_SCROLL Scrolls the text vertically in a multiline edit control. This message is equivalent to sending a WM_VSCROLL message to the edit control. You can send this message to either an edit control or a rich edit control.
EM_SCROLLCARET Scrolls the caret into view in an edit control. You can send this message to either an edit control or a rich edit control.
EM_SETCARETINDEX Sets the zero-based index of the position of the caret in an edit control.
EM_SETCUEBANNER Sets the textual cue, or tip, that is displayed by the edit control to prompt the user for information.
EM_SETENDOFLINE Sets the end-of-line character for a specified edit control. You can send this message explicitly or by using the Edit_SetEndOfLine macro.
EM_SETEXTENDEDSTYLE Sets the extended style for an edit control. Send this message explicitly or by using the Edit_SetExtendedStyle macro.
EM_SETHANDLE Sets the handle of the memory that will be used by a multiline edit control.
EM_SETHILITE Not implemented.
EM_SETIMESTATUS Sets the status flags that determine how an edit control interacts with the IME.
EM_SETLIMITTEXT Sets the text limit of an edit control. The text limit is the maximum amount of text, in TCHARs, that the user can type into the edit control. You can send this message to either an edit control or a rich edit control.
For edit controls and Microsoft Rich Edit 1.0, bytes are used. For Microsoft Rich Edit 2.0 and later, characters are used.
The EM_SETLIMITTEXT message is identical to the EM_LIMITTEXT message.
EM_SETMARGINS Sets the widths of the left and right margins for an edit control. The message redraws the control to reflect the new margins. You can send this message to either an edit control or a rich edit control.
EM_SETMODIFY Sets or clears the modification flag for an edit control. The modification flag indicates whether the text within the edit control has been modified. You can send this message to either an edit control or a rich edit control.
EM_SETPASSWORDCHAR Sets or removes the password character for an edit control. When a password character is set, that character is displayed in place of the characters typed by the user. You can send this message to either an edit control or a rich edit control.
EM_SETREADONLY Sets or removes the read-only style (ES_READONLY) of an edit control. You can send this message to either an edit control or a rich edit control.
EM_SETRECT Sets the formatting rectangle of a multiline edit control. The formatting rectangle is the limiting rectangle into which the control draws the text. The limiting rectangle is independent of the size of the edit control window.
This message is processed only by multiline edit controls. You can send this message to either an edit control or a rich edit control.
EM_SETRECTNP Sets the formatting rectangle of a multiline edit control. The EM_SETRECTNP message is identical to the EM_SETRECT message, except that EM_SETRECTNP does not redraw the edit control window.
The formatting rectangle is the limiting rectangle into which the control draws the text. The limiting rectangle is independent of the size of the edit control window.
This message is processed only by multiline edit controls. You can send this message to either an edit control or a rich edit control.
EM_SETSEL Selects a range of characters in an edit control. You can send this message to either an edit control or a rich edit control.
EM_SETTABSTOPS The EM_SETTABSTOPS message sets the tab stops in a multiline edit control. When text is copied to the control, any tab character in the text causes space to be generated up to the next tab stop.
This message is processed only by multiline edit controls. You can send this message to either an edit control or a rich edit control.
EM_SETWORDBREAKPROC Replaces an edit control's default Wordwrap function with an application-defined Wordwrap function. You can send this message to either an edit control or a rich edit control.
EM_SETZOOM Sets the zoom ratio anywhere between 1/64 and 64. You can send this message to either an edit control or a rich edit control. You can send this message explicitly or by using the Edit_SetZoom macro.
EM_SHOWBALLOONTIP The EM_SHOWBALLOONTIP message displays a balloon tip associated with an edit control.
EM_TAKEFOCUS Intended for internal use; not recommended for use in applications.
Forces a single-line edit control to receive keyboard focus. You can send this message explicitly or by using the Edit_TakeFocus macro.
EM_UNDO This message undoes the last edit control operation in the control's undo queue. You can send this message to either an edit control or a rich edit control.
WM_UNDO An application sends a WM_UNDO message to an edit control to undo the last operation. When this message is sent to an edit control, the previously deleted text is restored or the previously added text is deleted.

Notifications

Topic Contents
EN_ALIGN_LTR_EC Sent when the user has changed the edit control direction to left-to-right. The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_ALIGN_RTL_EC Sent when the user has changed the edit control direction to right-to-left. The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_CHANGE Sent when the user has taken an action that may have altered text in an edit control. Unlike the EN_UPDATE notification code, this notification code is sent after the system updates the screen. The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_ERRSPACE Sent when an edit control cannot allocate enough memory to meet a specific request. The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_HSCROLL Sent when the user clicks an edit control's horizontal scroll bar. The parent window of the edit control receives this notification code through a WM_COMMAND message. The parent window is notified before the screen is updated.
EN_KILLFOCUS The EN_KILLFOCUS notification code is sent when an edit control loses the keyboard focus. The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_MAXTEXT Sent when the current text insertion has exceeded the specified number of characters for the edit control. The text insertion has been truncated.
This message is also sent when an edit control does not have the ES_AUTOHSCROLL style and the number of characters to be inserted would exceed the width of the edit control.
This message is also sent when an edit control does not have the ES_AUTOVSCROLL style and the total number of lines resulting from a text insertion would exceed the height of the edit control.
The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_SETFOCUS Sent when an edit control receives the keyboard focus. The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_UPDATE Sent when an edit control is about to redraw itself. This notification code is sent after the control has formatted the text, but before it displays the text. This makes it possible to resize the edit control window, if necessary. The parent window of the edit control receives this notification code through a WM_COMMAND message.
EN_VSCROLL Sent when the user clicks an edit control's vertical scroll bar or when the user scrolls the mouse wheel over the edit control. The parent window of the edit control receives this notification code through a WM_COMMAND message. The parent window is notified before the screen is updated.
WM_CTLCOLOREDIT An edit control that is not read-only or disabled sends the WM_CTLCOLOREDIT message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the edit control.

Structures

Topic Contents
EDITBALLOONTIP Contains information about a balloon tip associated with a button control.

Constants

Topic Contents
Edit Control Styles To create an edit control using the CreateWindow or CreateWindowEx function, specify the EDIT class, appropriate window style constants, and a combination of the following edit control styles. After the control has been created, these styles cannot be modified, except as noted.