16,554
社区成员
发帖
与我相关
我的任务
分享
Private Overloads Declare Auto Function SendMessage Lib "user32" ( _
ByVal hwnd As IntPtr, _
ByVal wMsg As Int32, _
ByVal wParam As Int32, _
ByVal lParam As String _
) As Int32
Private Overloads Declare Auto Function SendMessage Lib "user32" ( _
ByVal hwnd As IntPtr, _
ByVal wMsg As Int32, _
ByVal wParam As Int32, _
ByVal lParam As Int32 _
) As Int32
Private Const EM_GETLINE As Int32 = &HC4
Private Const EM_GETLINECOUNT As Int32 = &HBA
Private Const MAX_CHAR_PER_LINE As Int32 = &H100
Private Const EM_LINELENGTH As Int32 = &HC1
Private Const EM_LINEINDEX As Int32 = &HBB
Private Function GetLine(ByVal Text As TextBoxBase, ByVal Line As Integer) As String
Dim dwLineStart As Int32 = SendMessage(Text.Handle, EM_LINEINDEX, Line, 0)
Dim dwLineLen As Integer = SendMessage(Text.Handle, EM_LINELENGTH, dwLineStart, 0)
Dim Buff As String = Chr(dwLineLen And &HFF) & Chr(dwLineLen / &H100) & Space(dwLineLen)
Dim dwLen As Int32 = SendMessage(Text.Handle, EM_GETLINE, Line, Buff)
GetLine = Strings.Left(Buff, dwLen)
End Function
Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim g As Graphics = TextBox1.CreateGraphics()
Dim w As Integer = CType(g.MeasureString(TextBox1.Text, TextBox1.Font).Width, Integer)
Dim s As String = GetLine(TextBox1, 0)
MsgBox(s)
End Sub