Article: Q160233
Product(s): Microsoft Visual Basic for Windows
Version(s):
Operating System(s):
Keyword(s): kbGrpDSVB
Last Modified: 11-JAN-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual Basic Standard Edition, 32-bit, for Windows, version 4.0
- Microsoft Visual Basic Professional Edition, 32-bit, for Windows, version 4.0
- Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows, version 4.0
-------------------------------------------------------------------------------
SYMPTOMS
========
You cannot set the SelStart property of RichTextBox controls that contain text
greater than 32K (32768) characters in length to a value greater than 32767 and
less than the text length. Although this is a legal range, SelStart is
automatically set to the text length. Consequently, you cannot make selections
within this range.
STATUS
======
Microsoft has confirmed this to be a bug in the Microsoft products listed at the
beginning of this article. This bug has been fixed in Visual Basic 5.0.
RESOLUTION
==========
Use the SendMessage API of USER32 with the EM_EXSETSEL parameter to set the
SelStart position:
Private Const WM_USER = &H400
Private Const EM_EXSETSEL = (WM_USER + 55)
Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Long) As Long
Private Sub Command1_Click()
Dim x As String
x = String(32800, "a")
RichTextBox1.Text = x
'''[THE NORMAL WAY] RichTextBox1.SelStart = 32790
SendMessage RichTextBox1.hwnd, EM_EXSETSEL, 0, 32790
RichTextBox1.SelLength = 10
MsgBox RichTextBox1.SelText
End Sub
MORE INFORMATION
================
Steps to Reproduce Problem
--------------------------
1. Start a new project in Visual Basic. Form1 is created by default.
2. Place a RichTextBox, RichTextBox1, on Form1.
3. Place a CommandButton, Command1, on Form1.
4. Place the following code in the Click event of Command1:
Private Sub Command1_Click()
Dim x As String
x = String(32800, "a")
RichTextBox1.Text = x
RichTextBox1.SelStart = 32790
RichTextBox1.SelLength = 10
MsgBox RichTextBox1.SelText
End Sub
5. Press the F5 key to run the project.
6. Click Command1 and note that nothing is selected.
Additional query words: kbstream kbVBp400bug kbVBp500fix kbVBp kbdsd kbDSupport kbControl
======================================================================
Keywords : kbGrpDSVB
Technology : kbVBSearch kbAudDeveloper kbVB400Search kbVB400
Issue type : kbbug
Solution Type : kbfix
=============================================================================