VS2010 VB中如何获取Mutiline为真的 textbox 行数 下面的代码有没有错误若有如何改有没有其他方法可实现

[复制链接]
查看11 | 回复3 | 2011-7-27 09:38:39 | 显示全部楼层 |阅读模式
在VB6.0中我知道可以用下面的api来实现
Const EM_GETLINECOUNT = 186
Private Declare Function SendMessageAsLong Lib "user32" _

Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _

ByVal wParam As Long, ByVal lParam As Long) As Long
Private Sub Command1_Click() ‘获取实际行数
Dim myParas As Variant
myParas = Split(Text1, vbNewLine)
MsgBox UBound(myParas) + 1
End Sub
Private Sub Command2_Click() ’获取自动换行后的显示行数
Dim lCount As Long
lCount = SendMessageAsLong(Text1.hWnd, EM_GETLINECOUNT, 0, 0)
MsgBox lCount
End Sub
在VS2010中把上面的按钮代码改成下面后可以获取实际行数(第一个按钮),但按下第二个按钮(获取显示行数)时却出现错误
Private Sub Command1_Click()
‘获取实际行数
Dim myParas As Variant
myParas = Split(Text1.Text, vbNewLine) 'VS中无法用text的名称来代替它的Text
MsgBox UBound(myParas) + 1
End Sub
Private Sub Command2_Click() ’获取自动换行后的显示行数
Dim lCount As Long
lCount = SendMessageAsLong(Text1.Handle, EM_GETLINECOUNT, 0, 0) ’在VS2010中获取句柄用 Handle
MsgBox lCount
End Sub
请问有没有那位高手知道为什么?上面的代码有没有错误?若有如何改?有没有其他方法可以在VS2010中获取Mutiline=true 的TextBox 的 自动换行后的显示行数?

回复

使用道具 举报

千问 | 2011-7-27 09:38:39 | 显示全部楼层
Private Declare Function SendMessageAsLong Lib "user32" _
Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal wMsg As Integer, _
ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const EM_LINEINDEX = &HBB
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETLINE = &HC4
Private...
回复

使用道具 举报

千问 | 2011-7-27 09:38:39 | 显示全部楼层
你把sendmessage的定义改成这样就好了:Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Int32, ByVal wMsg As Int32, ByVal wParam As Int32, ByVal lParam A...
回复

使用道具 举报

千问 | 2011-7-27 09:38:39 | 显示全部楼层
LineCount属性...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行