How to Limit User Input in VB Combo Box with SendMessage APIID: Q72677
|
You can specify a limit to the amount of text that can be entered into a combo box by calling SendMessage (a Windows API function) with the EM_LIMITTEXT constant.
The following method can be used to limit the length of a string
entered into a combo box. 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.
Or, the preferred method of performing this type of functionality 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.
'*** 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
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
Additional query words: 2.00 3.00
Keywords :
Version :
Platform :
Issue type :
Last Reviewed: June 16, 1999