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

用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资料 VB用 API 打开打印对话框 VB用API函数改进ListView控件的显示效果 VB用API函数控制光驱的开关 VB用注册表保存数据(VB函数篇) 有关Tray系统盒的VB API函数 在VB中调用API函数动态改变及恢复屏幕设置 在VB中控制Ctrl+Del+Alt键 在VB中使用API函数 (之二) 在VB中使用API函数 (之三) 在VB中使用API函数 (之四) 在VB中使用API函数 (之五) 在VB中使用API函数 (之一) 在VB中用API实现多媒体 VB怎样用VB在应用程序中调用API VB怎样在DELPHI中使用API函数 指定文件夹-VB资料 VB5中注册控件三法 Bug:维护 Internet Transfer Control 之 Username 及 Pass VB对低层硬件访问控制 HitTest的妙用 -VB资料 ListBox项的控制-VB资料 VB 6.0中类聚集关系的实现 VB6编程中如何获取硬盘分区信息 VB的坐标系统综述 VB调用C程序动态链接库的方法 VB对低层硬件的访问控制 VB软件开发中的错误捕获及处理技术 VB中Combo的一种输入检查制约方法的实现 VB中Winsock控制的UDP协议的使用 VB中的时间处理问题 各路高手,有兴趣的过来看看,一个多月了,还没解决,分不够在给 请教大家!信史服务的事情! 怎样使控件的属性在VB的属性窗口不出来。急 为什么在我定义的类中使用Response.Redirect()不行? 公司服务器问题,在线等!~~~ 关于两个线程挂起和恢复的逻辑问题,欢迎各位指教, windows2000,在线等待!! 各位大侠救命啊!!!! 唉,我做什么事都打不起精神来!郁闷,散分! 哪位给我以下的例子, 急救,快!!在线等 在CLI(command line interface)下怎么样读入用户命令 非常奇怪的问题:串口与graph图表 <input type="password">中可不可以改成*用别的符号代替? 共享Com问题 Dev c++编译通过而vc6.0不行,难道vc6.0连这都不支持? 我弄不明白,小毛驴还是我们的大斑竹吗? 为什么非计算机专业的找工作这么难?难道一定比专业人员差? 用c#如何将摄相头里的动态图象读出并显示出来? 关于时间段的显示问题! linux与windows之间怎么共享啊??? 已知链表元素(元素为结构类型)中的一个成员变量的值,怎样查找它、且将其取出呢? 怎樣控制和設置graph中每個類的每個序列的外觀色彩 新手求救,報表問題,在線等! 自己做的控件在HTML中怎么响应事件 求救!! 拜托大家帮帮忙!在线等待 怎么编写自己的函数库? 请教一个strut问题 sos 求急。如何取掉多显示器?? 后生可畏啊!佩服:绝对实力派。 请问如何把从oracle取出来的数据AdoRecordset保存为.dbf文件和.xls文件 如何还原一个窗口 质问斑竹:是谁删了《立法会第一立法案:水源小斑竹选举法》 谁在强结我帖子?站出来! 请问消息都是串行处理吗? 飞利浦15寸液晶显示器;先到先得。 有谁做过3D骨骼编程的,留一个联系方式 急救!!!WIN98启动就死.(在线等) 幫我看看這是什麼病毒:win32.HLLM.Reteras 急急????在繞等待!!!!!! pb含原代码的例子何处寻觅 如何读取word表格中的数据? 怎样让一个tc程序在一台没有安装tc的电脑上运行? 请问在Vb.NET中引用型变量本身在内存中的值怎么查看呢? 关于在网络版程序中单据号连续的问题? 有关上网的缓存文件(捧分跪等) 我这样实现查询可不可以,为什么没有结果请帮我看好吗 怎么VFP2.5 for windows里的界面(对话框的标题栏里)都没有关闭按钮啊 如何在用户长时间等待的过程中显示一个临时页 ERROR:ORA-12560: TNS: 协议适配器错误 如何在SQL语句里精确小数点以后的位数不清 那位文学高手给解释下“兰台之骨”为何意? 浓硫酸的英文名 后*兰台令史在宋朝时期是什么官呀?相当现在是官? 人类灭亡的几种可能 种植雷笋温州平阳腾蛟地区适合种植杭州雷笋吗?雷竹苗在哪里可购买?一亩大概需要种植多少棵雷竹苗?每棵雷竹苗价格大概多少?我准备种50亩左右,3-5年后每年平均可以赚到多少钱?可以种出 大家有关于"在秋天的阳关下"的作文吗?600字左右... 作文 冬日里的一缕阳关记叙文,600字 以“收藏阳关”为题目,写一篇关于童年的美好生活的作文.急用! “天增岁月人增寿 春满乾坤福满门”是指什么节日?如题 炒笋皮怎么做?需要什么原料,具体步骤是什么,谢谢 兰台知秋 是什么 印度北部发生火车撞人事故致4人死亡埃及前总统穆尔西首次出庭受审俄议员称美国创建了大规模全球性监听系斯诺登撰文称其揭秘行为正确 有助于引肯尼亚“追日”记――“昼夜”交替11俄议员称美国创建了大规模全球性监听系嫦娥三号“月球车”原理样机将亮相上海李克强三大施政要点:寻求平衡 力推改斯诺登撰文称其揭秘行为正确 有助于引时评:外交政策渐失灵 克里七访中东难克里开启中东之行 欲修复美国与沙特关中国复星集团拟入股
葡萄牙最大
道歉不应沦为权力工具责编:陈劲松 彭训文邮箱:diery法国小伙北京创业“天下第一雄关”的漫漫绿化路天山脚下绿意融融金牌预测中国看点多 俄罗斯被禁还能排中国水军里约首训挺里约奥运缅甸和平委员会与勐拉军代表举行会谈广州乞巧文化节周五开幕为期6天
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘