Limiting the Amount of Text in a Macro Combo Box or Text BoxLast reviewed: August 4, 1997Article ID: Q114298 |
6.00 6.00a 6.00c 7.00
WINDOWS
kbusage kbmacro
The information in this article applies to:
SUMMARYIf you create a custom dialog box, you can specify a limit to the amount of text that can be entered into a combo box or text box by using SendMessage (a Windows API function) with the EM_LIMITTEXT constant.
MORE INFORMATIONThe preferred way to limit the length of a string entered into a combo or text box 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 argument. The SendMessage function requires the following parameters for setting the text limit
SendMessage Lib "User"(hWnd As Integer, wMsg As Integer, wParam As Integer, lParam As String) As Longwhere:
hWnd Specifies the handle to the edit control. 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. lParam Is not used. ExampleWARNING: ANY USE BY YOU OF THE CODE PROVIDED IN THIS ARTICLE IS AT YOUR OWN RISK. Microsoft provides this macro code "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
Word 7.0
Declare Function GetFocus Lib "User32"() As Long Declare Function SendMessageA Lib "User32"(hWnd As Long, wMsg As Integer,wParam As Integer, lParam As String) As Long Dim Shared WM_USER, EM_LIMITTEXT, TextLimit Sub MAIN WM_USER = 1024 EM_LIMITTEXT = WM_USER + 21 TextLimit = 4 'Sets the number of chars Begin Dialog UserDialog 320, 144, "MyApp", .dlgfun OKButton 10, 6, 88, 21 TextBox 10, 30, 160, 18, .TextBox1 PushButton 10, 51, 88, 21, "Push", .Push1 End Dialog Dim dlg As UserDialog Dialog dlg End SubFunction dlgfun(id$, action, wValue) Select Case action Case 1 DlgVisible "TextBox1", 0 Case 2 If id$ = "Push1" Then DlgVisible "TextBox1", 1 DlgFocus "TextBox1" hWnd = getfocus retVal = SendMessageA(hWnd, EM_LIMITTEXT, TextLimit, "") dlgfun = 1 End If Case 3 Case 4 Case 5 Case 6 Case Else End SelectEnd Function
Word 6.0
Declare Function GetFocus Lib "User"() As Integer Declare Function SendMessage Lib "User"(hWnd As Integer, wMsg AsInteger, wParam As Integer, lParam As String) As Long Dim Shared WM_USER, EM_LIMITTEXT, TextLimit Sub MAIN WM_USER = 1024 EM_LIMITTEXT = WM_USER + 21 TextLimit = 2 'Sets the number of chars Begin Dialog UserDialog 320, 144, "MyApp", .dlgfun OKButton 10, 6, 88, 21 TextBox 10, 30, 160, 18, .TextBox1 PushButton 10, 51, 88, 21, "Push", .Push1 End Dialog Dim dlg As UserDialog Dialog dlg End SubFunction dlgfun(id$, action, wValue) Select Case action Case 1 DlgVisible "TextBox1", 0 Case 2 If id$ = "Push1" Then DlgVisible "TextBox1", 1 DlgFocus "TextBox1" hWnd = getfocus retVal = SendMessage(hWnd, EM_LIMITTEXT, TextLimit, "") dlgfun = 1 End If Case 3 Case 4 Case 5 Case 6 Case Else End SelectEnd Function
REFERENCES"Microsoft Software Development Kit (SDK) for Microsoft Windows operating system version 3.1" Kbcategory: kbusage kbmacro KBSubcategory: |
Additional reference words: 6.00 6.00a winword word6 6.00c 7.00 word95
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |