1 out of 1 rated this helpful - Rate this topic

WM_GETTEXTLENGTH message

Applies to: desktop apps only

Determines the length, in characters, of the text associated with a window.

#define WM_GETTEXTLENGTH                0x000E

Parameters

wParam

This parameter is not used and must be zero.

lParam

This parameter is not used and must be zero.

Return value

Type: LRESULT

The return value is the length of the text in characters, not including the terminating null character.

Remarks

For an edit control, the text to be copied is the content of the edit control. For a combo box, the text is the content of the edit control (or static-text) portion of the combo box. For a button, the text is the button name. For other windows, the text is the window title. To determine the length of an item in a list box, an application can use the LB_GETTEXTLEN message.

When the WM_GETTEXTLENGTH message is sent, the DefWindowProc function returns the length, in characters, of the text. Under certain conditions, the DefWindowProc function returns a value that is larger than the actual length of the text. This occurs with certain mixtures of ANSI and Unicode, and is due to the system allowing for the possible existence of double-byte character set (DBCS) characters within the text. The return value, however, will always be at least as large as the actual length of the text; you can thus always use it to guide buffer allocation. This behavior can occur when an application uses both ANSI functions and common dialogs, which use Unicode.

To obtain the exact length of the text, use the WM_GETTEXT, LB_GETTEXT, or CB_GETLBTEXT messages, or the GetWindowText function.

Sending a WM_GETTEXTLENGTH message to a non-text static control, such as a static bitmap or static icon controlc, does not return a string value. Instead, it returns zero.

Requirements

Minimum supported client

Windows 2000 Professional

Minimum supported server

Windows 2000 Server

Header

Winuser.h (include Windows.h)

See also

Reference
DefWindowProc
GetWindowText
GetWindowTextLength
WM_GETTEXT
Conceptual
Windows
Other Resources
CB_GETLBTEXT
LB_GETTEXT
LB_GETTEXTLEN

 

 

Send comments about this topic to Microsoft

Build date: 2/3/2012

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
No defined Window Caption/Title length (Restrictions apply to developer tools used)
There is no defined maximum length for this message. Although it's uncommon to see a window title exceed more than 2048 characters certain languages support different settings for window text/caption lengths. This means that a typical windows .NET form can support 260091characters in it's title/caption other languages such as VB6 for example only support 28000 characters. This limitiation doesn't appear to be restricted by the operating system but if there really is definition for MAX_WINDOW_CAPTIONLENGTH it should be discussed but it appears to me there is no limitation length enforced by the OS itself.

If you want to use WM_GETTEXT it's recommended that if you don't know the target title you should use this message to allocate a buffer large enough to support the entire caption of the window. If you want to just provide a buffer it should be in the range 0 - 65536 to be considered safe.

#define MAX_CLASS_NAME = 256
#define MAX_WINDOW_CAPTIONLENGTH = 65536 <--- NOTE: This isn't REAL it's only what would be reasonable on Windows NT.
There is no defined set length for title/captions
There is no defined maximum length for this message. Although it's uncommon to see a window title exceed more than 2048 characters certain languages support different settings for window text/caption lengths. This means that a typical windows .NET form can support 260091characters in it's title/caption other languages such as VB6 for example only support 28000 characters. This limitiation doesn't appear to be restricted by the operating system but if there really is definition for MAX_WINDOW_CAPTIONLENGTH it should be discussed but it appears to me there is no limitation length enforced by the OS itself. This restriction is also not limited with WM_GETTEXT either so it will copy as much that you tell it to copy into the buffer.

If you want to use WM_GETTEXT it's recommended that if you don't know the target title you should use this message to allocate a buffer large enough to support the entire caption of the window. If you want to just provide a buffer it should be in the range 0 - 65536 to be considered safe.

#define MAX_CLASS_NAME = 256
#define MAX_WINDOW_CAPTIONLENGTH = 65536 <--- NOTE: This isn't REAL it's only what would be reasonable on Windows NT.

Value
WM_GETTEXTLENGTH = &HE