VB解决不了的问题?!各路英雄,请进!!!
首先:欢迎各路英雄跟贴。
在上一贴中,特别感谢:VBAdvisor,Tiger_Zhao,zyl910(排名不分先后啊)。上回讨论的问题如下:
VB老鸟:
可能是 Buffer 长度不足,修改如下,测试通过
Public Function GetLineText(ByVal handle As Long, ByVal index As Long) As String
'handle 为richtextbox句柄,index为行号
Dim LineText() As Byte
Dim size As Long
Dim pos As Long
pos = SendMessage(handle, EM_LINEINDEX, index, 0)
size = SendMessage(handle, EM_LINELENGTH, pos, 0)
If size = 0 Then
GetLineText = ""
Else
ReDim LineText((size * 2 - 1) + 1)
CopyMemory LineText(0), size * 2, 2
size = SendMessage(handle, EM_GETLINE, index, LineText(0))
GetLineText = StrConv(LeftB(LineText, size), vbUnicode)
End If
End Function
经测试:是size = SendMessage(handle, EM_LINELENGTH, pos, 0)
返回的长度不够。也就是说,返回的长度是将中英文混排的行文本按英文字符进行处理的。
现在的问题是:怎样才能正确地定位光标的编号呢,怎样才能正确的统计出中英文混排的长度呢。(在richTextbox中,每一行每一列每一个字符都有编号,但很遗憾,SendMessage定位的光标位置编号都是按英文字符处理的)
您有解决办法吗?让大家一起分享的您的成功!!!