SendDlgItemMessage(IDC_RICHEDIT, EM_EXLIMITTEXT, 0, 65536L);
如果觉得64K还不够大,可以再加点

解决方案 »

  1.   

    能不能写出IDC_RICHEDIT, EM_EXLIMITTEXT的值,我在API32中查没有。如果我实现一定给你满分!
      

  2.   

    使用Windows API for Edit Control
    获得当前行数:EM_LINEFROMCHAR  EM_LINEINDEX 
    获得总行数
    Const EM_GETLINECOUNT = &HBA
    Private Declare Function SendMessageBynum Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Longret = SendMessageBynum(Text1.hwnd, EM_GETLINECOUNT, 0, 0&)
      

  3.   

    你是指EM_EXLIMITTEXT吗? 
    IDC_RICHEDIT找到了吗?
      

  4.   

    jiangtao,我不是要总行数,是要当前光标的行数和列数
      

  5.   

    就是啊index是当前光标位置(在整个Buf中得offset)
    当前行数:用SendMessage(hwnd,EM_LINEFROMCHAR,Index,0)
    当前列数:用SendMessage(hwnd,EM_LINEIndex,curLineNo,0)得到当前行偏移
    和Index相减就是列数,
    你应该去查Editwindow的API帮助
      

  6.   

    hEditWnd是你的RichEdit控件的窗口句柄(可通过GetDlgItem得到),则:
    1. GetCaretPos( lpPoint );
    2. nIndex = SendMessage(hEditWnd, EM_CHARFROMPOS, 0, MAKELONG(lpPoint->x, lpPoint->y));
    3. nLine = SendMessage(hEditWnd, EM_LINEFROMCHAR, nIndex, 0);
    nLine就是当前光标所在的行号(第一行为0)
      

  7.   

    WHQ:你用 GetCaretPos(lpPonit) 干什么?它是以像数为单位的
    在VB中好象没有 MAKELONG()这个函数,也没有lpPoint->x的引用方法(好象是VC的)
      

  8.   

    jiangtao:SendMessage(hwnd,EM_LINEFROMCHAR,Index,0)中的index怎么得到?
      

  9.   

    VB中没有类的概念,但总有处理结构化数据的能力吧?GetCaretPos是API函数,VB中总可以调用的,这个函数需要一个二维点坐标的结构地址做为参数。如果VB中没有MAKELONG(这是SDK提供的一个宏)这个宏,那你可把GetCaretPos返回的参数直接做为第二步的消息中的LPARAM试试。
      

  10.   

    WHQ:GetCaretPos(lpPonit)中的lpPonit参数怎么得到,我定义了一个POINTAPI变量
    Dim Pa as POINTAPI,可怎么用Pa变量?
      

  11.   

    我不会VB语法,VB中调用函数时怎么传递参数,你这也那么传就行了,注意是传地址而不传值。
      

  12.   

    WHQ:不会没关系,只要你告诉我GetCaretPos(lpPonit)中的变量lpPoint怎么赋值就行了,用别的语言写也可以
      

  13.   

    只有WHQ的第一个方法还可以试一试
    SendDlgItemMessage(IDC_RICHEDIT, EM_EXLIMITTEXT, 0, 65536L)
    可IDC_RICHEDIT和EM_EXLIMITTEXT的值不知道,具体也没写清楚
      

  14.   

    EM_EXLIMITTEXT = &HD5IDC_RICHEDIT是VC的资源ID, 再VB中用 RichTextBox1.hWnd 就行!