ID Number: Q72677
1.00
WINDOWS
Summary:
You can specify a limit to the amount of text that can be entered into
a text and/or combo box by calling SendMessage (a Windows 3.0 API
function) with the EM_LIMITTEXT constant.
This information applies to Microsoft Visual Basic programming system
version 1.0 for Windows.
More Information:
The constant EM_LIMITTEXT can be sent to the SendMessage Windows 3.0
API function to limit the length of a string entered into a combo
and/or text box.
Another method is to check the length of a string inside a KeyPress
event for the control. If the length is over a specified amount, then
the formal argument parameter KeyAscii will be set to zero.
A cleaner way is to use the SendMessage API function call. After you
set the focus to the desired edit control, you must send a message to
the window's message queue that will reset the text limit for the
control. The argument EM_LIMITTEXT, as the second parameter to
SendMessage, will set the desired text limit based on the value
specified by the third arguments. The SendMessage function requires
the following parameters for setting the text limit:
SendMessage (hWnd%,EM_LIMITTEXT, wParam%, lParam)
wParam% Specifies the maximum number of bytes that can be
entered. If the user attempts to enter more
characters, the edit control beeps and does not accept
the characters. If the wParam parameter is zero, no
limit is imposed on the size of the text (until no more
memory is available)
lParam Is not used.
As an example, do the following:
1. Create a form called Form1.
2. Add to Form1 a combo box called Combo1.
3. Add the following code to the general declarations section of the
form:
'*** Note: Each Declare statement must be on just one line:
Declare Function GetFocus% Lib "user" ()
Declare Function SendMessage& Lib "user" (ByVal hWnd%,
ByVal wMsg%,
ByVal wParam%,
lp As Any)
Const WM_USER = &H400
Const EM_LIMITTEXT = WM_USER + 21
4. Add the following code to the Form_Load event procedure:
Sub Form_Load ()
Form1.Show 'Must show form to work on it
Combo1.SetFocus 'Set the focus to the list box
cbhWnd% = GetFocus() 'Get the handle to the list box
TextLimit% = 5 'Specify the largest string
retVal& = SendMessage(cbhWnd%, EM_LIMITTEXT, TextLimit%, 0)
End Sub
5. Run the program and enter some text into the combo box. You will
notice that you will only be able to enter a string of five
characters into the combo box.
Reference(s):
"Programming Windows: the Microsoft Guide to Writing Applications for
Windows 3," Charles Petzold. Microsoft Press, 1990
"Microsoft Windows Software Development Kit: Reference Volume 1,"
version 3.0
WINSDK.HLP file shipped with Microsoft Windows 3.0 Software
Development Kit
Additional reference words: 1.00 3.00