看流星社区

 找回密码
 注册账号
查看: 2869|回复: 1

[VB] 问2个关于SendMessage函数的问题

[复制链接]

该用户从未签到

发表于 2011-4-11 09:41:22 | 显示全部楼层 |阅读模式
测试的代码如下:
Public Function 获取字符串(文本控件名 As TextBox, Optional ByVal 长度 As Long = 0) As String
Dim 返回长度 As Long, 字符串() As Byte
If 长度 = 0 Then
    ReDim 字符串(0)
    返回长度 = SendMessage(文本控件名.hWnd, WM_GETTEXT, -1, 字符串(0))
'    Debug.Print 返回长度
    If 返回长度 < 1 Then 获取字符串 = "": Exit Function
    长度 = 返回长度
End If
ReDim 字符串(长度 - 1)
返回长度 = SendMessage(文本控件名.hWnd, WM_GETTEXT, 长度 * 2 , 字符串(0))
'Debug.Print 返回长度
获取字符串 = StrConv(字符串, vbUnicode)
End Function
主要目的是获取一个未知字节数大小的文本框字符,可我在测试时发现了2个问题。
1、当文本框内字符过多(我复制了642K进去)时程序就会崩溃掉,但在第一次读取时设置获取字节数为65536时,能正常读取。
2、当指定长度后,无法正常读取中文字符串,比如测试字符为"I爱YOU",设置长度为2时,就不能正常的获取"爱"字。
求高手解答

该用户从未签到

发表于 2011-4-11 09:41:30 | 显示全部楼层
第二个问题你应该读取3个吧。中文占2
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 21:29

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表