自动换行的问题前面讲过,就是将rightmargin设定为一个很大的值,例如60000

解决方案 »

  1.   

    获得RTF控件中列数的代码:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
            (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
            lParam As Any) As Long
    Const EM_GETLINECOUNT = &HBAPrivate Sub Command1_Click()
        Debug.Print SendMessage(RichTextBox1.hwnd, EM_GETLINECOUNT, 0, 0)
    End Sub
      

  2.   

    to TechnoFantasy:
      你写的这个是取得行数的代码,而且是取得总行数,另外rightmargin设置一个很大的数可以解决自动换行的问题,但是如果更大一些,比如设置为6000000,又不能自动换行了,每一行更短了,请问这是什么原因?这个属性的意思我看msdn没有看懂,是不是设置从左到右的总长度?
      

  3.   

    to TechnoFantasy
    就好想是光标所在的坐标值一样,行数是Y,列数就是X
      

  4.   

    首先在VB中建立一个新工程,并在Form1中加入一个TextBox控件和两个Label控件。将TextBox控件的MultiLine
    属性设置为True。然后在Form1的代码窗口中加入如下代码:Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageW" _
            (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
            lParam As Any) As Long
    Private Declare Function SendMessageByRef Lib "user32" Alias "SendMessageA" _
            (ByVal hwnd As Long, ByVal wMsg As Long, wParam As Long, _
            lParam As Long) As Long
            
    Const EM_LINEFROMCHAR = &HC9
    Const EM_LINEINDEX = &HBB
    Const EM_GETLINE = &HC4
    Const EM_GETSEL = &HB0Dim iLineX, iLineY As LongSub GetCurPos(txtA As TextBox)
        Dim l, l1, l2 As Long
        Dim astr As String * 256
        
        l = SendMessage(txtA.hwnd, EM_LINEINDEX, -1, 0)
        iLineY = SendMessage(txtA.hwnd, EM_LINEFROMCHAR, l, 0)
        
        SendMessageByRef txtA.hwnd, EM_GETSEL, l1, l2
        iLineX = l1 - l
        Label1.Caption = "列:" + Str(iLineX)
        Label2.Caption = "行:" + Str(iLineY)
    End SubPrivate Sub Form_Load()
        Dim iFile
        Dim astr As String
        
        Label1.Height = 300: Label2.Height = 300
        Text1.Left = 0: Text1.Top = 0
        Text1.Text = ""
        Label1.Caption = ""
        Label2.Caption = ""
        
        iFile = FreeFile
        Open "C:\windows\readme.txt" For Input As #iFile
        Do
            Line Input #iFile, astr
            Text1.Text = Text1.Text + astr + vbCrLf
        Loop Until EOF(iFile)
        Close iFile
    End SubPrivate Sub Form_Resize()
        Label1.Top = Me.ScaleHeight - 300
        Label2.Top = Me.ScaleHeight - 300    Label1.Left = 0: Label2.Left = 1200
        Label1.Width = 1200
        Label2.Width = 1200
        
        Text1.Width = Me.ScaleWidth
        Text1.Height = Me.ScaleHeight - Label1.Height
    End SubPrivate Sub Text1_Click()
        GetCurPos Text1
    End SubPrivate Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
        GetCurPos Text1
    End Sub
        在运行程序前,确保在你的硬盘上有 c:\windows\readme.txt 这个文件。否则程序会出错。然后运行
    程序。当在编辑文本时,可以看到在窗口底部可以显示当前光标所在的行、列值。