在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 的 自动换行后的显示行数?
|