用VB怎样提取TEXTBOX中的一行?

leiyusong2000 2003-11-15 02:51:30
网上有一段是这样的
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




对英文支持的很好 可是到了中文就不行了。哪位大侠帮帮忙。谢谢啦
...全文
95 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanlong 2003-11-15
  • 打赏
  • 举报
回复
用api函数呀!
EM_GETLINE
flc 2003-11-15
  • 打赏
  • 举报
回复
关注
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 在VB(Visual Basic)编程TextBox控件常用于接收用户输入的文本。有时,为了提升界面美观度和用户体验,我们希望让TextBox内的文本垂直居显示。以下是一种实现方法: 要让TextBox支持多行文本,需在设计阶段将MultiLine属性设置为True,因为垂直居通常适用于多行文本,而单行文本默认居。运行时无法修改MultiLine属性,因此必须提前设置。 实现垂直居需要借助一些Windows API函数。关键函数包括:SendMessage(向窗口发送消息)、SetWindowText(更改窗口标题)、CallWindowProc(调用窗口过程)、GetWindowLong和SetWindowLong(获取和设置窗口的额外信息,如窗口过程)。重点是EM_GETRECT和EM_SETRECTNP消息,它们用于获取和设置TextBox的文本区域矩形。通过调整矩形高度,可以使文本在TextBox内居。 具体步骤如下: 定义RECT结构,用于存储矩形信息。 声明上述API函数。 使用EM_GETRECT获取TextBox当前矩形。 调整矩形的顶部或底部,使文本居。 使用EM_SETRECTNP设置新矩形,实现垂直居。 为防止破坏TextBox默认行为,需保存和恢复原始窗口过程。这涉及GWL_WNDPROC常量(窗口过程索引)以及SetWindowLong和GetWindowLong函数。DisableAbility函数用于挂接自定义窗口过程,拦截特定消息;WndProc函数是自定义窗口过程,用于处理消息,例如忽略非回车键的WM_CHAR消息和处理WM_PASTE消息。 需要注意的是,这种方法可能会影响TextBox的其他功能(如粘贴操作)。在实际应用,必须确

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧