在RichTextBox控件中,怎样获得超过32,767字节的文本文件的行数和列数?

peacock 2000-01-20 09:53:00
在RichTextBox控件中,怎样获得超过32,767字节的文本文件的行数和列数?
...全文
330 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-02-29
  • 打赏
  • 举报
回复
EM_EXLIMITTEXT = &HD5

IDC_RICHEDIT是VC的资源ID, 再VB中用 RichTextBox1.hWnd 就行!
peacock 2000-02-28
  • 打赏
  • 举报
回复
只有WHQ的第一个方法还可以试一试
SendDlgItemMessage(IDC_RICHEDIT, EM_EXLIMITTEXT, 0, 65536L)
可IDC_RICHEDIT和EM_EXLIMITTEXT的值不知道,具体也没写清楚
peacock 2000-01-21
  • 打赏
  • 举报
回复
jiangtao:SendMessage(hwnd,EM_LINEFROMCHAR,Index,0)中的index怎么得到?
peacock 2000-01-21
  • 打赏
  • 举报
回复
WHQ:你用 GetCaretPos(lpPonit) 干什么?它是以像数为单位的
在VB中好象没有 MAKELONG()这个函数,也没有lpPoint->x的引用方法(好象是VC的)
peacock 2000-01-21
  • 打赏
  • 举报
回复
jiangtao,我不是要总行数,是要当前光标的行数和列数
WHQ 2000-01-21
  • 打赏
  • 举报
回复
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)
jiangtao 2000-01-21
  • 打赏
  • 举报
回复
就是啊

index是当前光标位置(在整个Buf中得offset)
当前行数:用SendMessage(hwnd,EM_LINEFROMCHAR,Index,0)
当前列数:用SendMessage(hwnd,EM_LINEIndex,curLineNo,0)得到当前行偏移
和Index相减就是列数,
你应该去查Editwindow的API帮助
peacock 2000-01-21
  • 打赏
  • 举报
回复
WHQ:不会没关系,只要你告诉我GetCaretPos(lpPonit)中的变量lpPoint怎么赋值就行了,用别的语言写也可以
WHQ 2000-01-21
  • 打赏
  • 举报
回复
我不会VB语法,VB中调用函数时怎么传递参数,你这也那么传就行了,注意是传地址而不传值。
peacock 2000-01-21
  • 打赏
  • 举报
回复
WHQ:GetCaretPos(lpPonit)中的lpPonit参数怎么得到,我定义了一个POINTAPI变量
Dim Pa as POINTAPI,可怎么用Pa变量?
WHQ 2000-01-21
  • 打赏
  • 举报
回复
VB中没有类的概念,但总有处理结构化数据的能力吧?GetCaretPos是API函数,VB中总可以调用的,这个函数需要一个二维点坐标的结构地址做为参数。如果VB中没有MAKELONG(这是SDK提供的一个宏)这个宏,那你可把GetCaretPos返回的参数直接做为第二步的消息中的LPARAM试试。
jiangtao 2000-01-20
  • 打赏
  • 举报
回复
使用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 Long

ret = SendMessageBynum(Text1.hwnd, EM_GETLINECOUNT, 0, 0&)
kxy 2000-01-20
  • 打赏
  • 举报
回复
你是指EM_EXLIMITTEXT吗?
IDC_RICHEDIT找到了吗?
peacock 2000-01-20
  • 打赏
  • 举报
回复
能不能写出IDC_RICHEDIT, EM_EXLIMITTEXT的值,我在API32中查没有。如果我实现一定给你满分!
WHQ 2000-01-20
  • 打赏
  • 举报
回复
SendDlgItemMessage(IDC_RICHEDIT, EM_EXLIMITTEXT, 0, 65536L);
如果觉得64K还不够大,可以再加点

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧