说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB快速读取TextBox第N行的数据

HTML文档下载 WORD文档下载 PDF文档下载
用VB快速读取TextBox第N行的数据
TextBox 是以 vbCr+vbLf 为分行符号, 如果我们要逐一读取 TextBox 每一行, 无非是寻找 vbCr+vbLf 的所在位置, 然后取出每一行的字串, 不过这个方法不快,而且如果我们要读取第 N 行数据,还是要从第 1、2、…N-1 行逐一读起,实在麻烦。 还好 Windows API 提供有读取 TextBox 第 N 行的功能, 细节如下:

1、API 的声明:

Public Const EM_GETLINE = &HC4
Public Const EM_LINELENGTH = &HC1
Public Const EM_LINEINDEX = &HBB

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)

2. 程序范例:


Sub TB_GetLine(ByVal hWnd As Long, ByVal whichLine As Long, Line As String)

Dim length As Long, bArr() As Byte, bArr2() As Byte, lc As Long

lc = SendMessage(hWnd, EM_LINEINDEX, whichLine, ByVal 0&)

length = SendMessage(hWnd, EM_LINELENGTH, lc, ByVal 0&)

If length > 0 Then
ReDim bArr(length + 1) As Byte,bArr2(length - 1) As Byte
Call RtlMoveMemory(bArr(0), length, 2) '准备一个存储器,传递消息之前先在存储器的前两个字节填入存储器的长度
Call SendMessage(hWnd, EM_GETLINE,whichLine, bArr(0))
Call RtlMoveMemory(bArr2(0), bArr(0), length)
Line = StrConv(bArr2, vbUnicode)
Else
Line = ""
End If

End Sub


' 假设要读取 Text1 第 5 行的数据

Dim S As String

Call TB_GetLine( Text1.hWnd, 5, S )

' 传回值 S 即等于第 5 行的数据

( 注:TextBox 的行次是从 0 起算。)

站长在去掉有关bArr2的定义后,并将Line=Strconv(bArr2,vbUnicode)改为Line=StrConv(bArr,vbUnicode)发现程序照常运行,似乎bArr2在本程序中是多余的。不知哪位大虾能告知本人bArr2在这里的作用。
VB用WinSock设计Chat程序 运用MSChart,生成统计图形-VB资料 向文本框等等控件的系统右键菜单里追加自己定义的菜单-VB资料 在VB中用定时控件实现长定时操作 在Visual Basic中,在GotFocus事件中快速选定文本 请教这两个语句不同在哪里??? 送给zhouqingyuan(浪帆)的积分 -2 大家好啊 小女子刚学C语言 还请各位大哥大姐多多关照? 如何自动给表中的数据顺序分配行号? 在VC下非MFC程序里如何使用一个窗口控件 在mapinfo中计算最佳路径 关于文件读写问题--频繁的!!!100分! 数据集重新排序问题!简单,给点建议。 oracle占用了8080端口,是怎么回事?不是他的http那个服务,那个停着 函数y=x+2cosx在区间[0,π/2]上的最大 函数y=x+2cosx在[0,π/2]上取得最大值 第五大题,第9.10.11.12.13.14小题, 如图,点P(x,y)是反比例函数y=k/x(x>0 如图,P是反比例函数y=k/x(k≠0)图像上一点 如 图点p为反比例函数y=8/x(x>0)上一点P P是反比例函数y=k/x(k≠0)图像上一点,PA 函数y=x+2cosx在[0,π/2]上取得最大值 函数y=x+2cosx在[0,派/2]上的最大值多 报告称全美国一年有500名少年儿童死阿根廷执政党保住国会最大党地位 但选加拿大婚外情网站欲进驻新加坡 遭民众印度拟射火星探测器 欲争亚洲第一被批美监管机构调查房地产信托投资基金南南合作的重大成果习主席拉美行具里程碑意义上海青莲阁拍卖有限责任公司拍卖公告欧盟考虑制裁俄罗斯国有银行台风暴雨红警,中小学幼托停课仙城之王狂魔逐天无上神通奶妈威武重生之神级败家子公明广场旅游宋夹城考古遗址公园旅游海南京润珍珠博物馆旅游太平森林公园旅游梅福禅院旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘