当前位置: 代码迷 >> VB >> API 回到文本行数出错
  详细解决方案

API 回到文本行数出错

热度:207   发布时间:2016-05-19 04:22:47.0
API 返回文本行数出错!
 Private Sub Text1_Click()
 Dim curline As Long
 curline = SendMessage(Text1.hwnd, EM_LINEFROMCHAR, Text1.SelStart, 0&) + 1
End Sub  

curline返回光标当前行,有时候能正确返回正确行数值,有时候返回的是错误的值。例如,点了第三行,返回是2,就是返回值不准确。返回值不会比当前行大,只会小。先在此谢谢各位了。
------解决方案--------------------
可能你的文本包含硬回车以外的自动分行。
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

Const EM_GETLINECOUNT = 186

Private Sub Command2_Click()
Dim lCount As Long
lCount = SendMessageAsLong(Text1.hWnd, EM_GETLINECOUNT, 0, 0)
MsgBox lCount
End Sub

------解决方案--------------------
需求不能理解。
如果直接用 TextBox 编辑,那就全文保存,不需要关联光标与文件行号之间的关系。
如果只是为了选择行号而不在 TextBox 中编辑,那么用 ListBox 好了,一项对一行。
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!
 
  • 最近登录:Sat May 27 14:25:40 CST 2017
  • 最近登录:Sat May 27 14:25:40 CST 2017
  • 最近登录:Sat May 27 14:25:40 CST 2017
  • 最近登录:Sat May 27 14:25:40 CST 2017
  • 最近登录:Sat May 27 14:25:40 CST 2017