关于TEXT BOX的问题?急!!!

subzero 2000-02-25 11:00:00
怎样获得TEXT BOX的行数
怎样精确定位TEXT BOX的行
怎样快速REPLACE TEXTBOX中的指定文本,如HTML转为TEXT
另外,BIG5码表那里可以找到?
...全文
186 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
929 2000-02-25
  • 打赏
  • 举报
回复
我想要知道TEXTBOX中的行数,可通过判断字符串的回车来区分,得到行数后要定位,我想应该是把光标显示在指定的位置,这可用SETCARETPOS,SHOWCARET API来完成。至于替换,我想可通过一些查找与替换的字符串函数来完成。
BOOL SetCaretPos(

int X, // horizontal position
int Y // vertical position
);
BOOL ShowCaret(

HWND hWnd // handle of window with caret
);
BOOL HideCaret(

HWND hWnd // handle to the window with the caret
);
BIG5码表我不知道。
peacock 2000-02-25
  • 打赏
  • 举报
回复
回答你的第一个问题:
Sub GetCaretPosXY(ByVal TextHwnd As Long, LineNo As Long, ColNo As Long)
Dim I As Long, J As Long
Dim lParam As Long, wParam As Long
Dim K As Long
'首先向文本框传递EM_GETSEL消息以获取从起始位置到
'光标所在位置的字符数
I = SendMessage(TextHwnd, EM_GETSEL, wParam, lParam)
J = I / 2 ^ 16
'再向文本框传递EM_LINEFROMCHAR消息根据获得的字符
'数确定光标以获取所在行数
LineNo = SendMessage(TextHwnd, EM_LINEFROMCHAR, J, 0) '
LineNo = LineNo + 1
'向文本框传递EM_LINEINDEX消息以获取所在列数
K = SendMessage(TextHwnd, EM_LINEINDEX, -1, 0)
ColNo = J - K + 1
End Sub

用法如下:
Dim LineNo As Long, ColNo As Long
Call GetCaretPosXY(Text1.hwnd, LineNo, ColNo)
变量 LineNo 的值就是Text1的行数;
变量 ColNo 的值就是Text1的列数;
然后第二和第三个问题你就自己编了。
第二和第三个问题如用RichTextBox孔件就简单了,
dongdong 2000-02-25
  • 打赏
  • 举报
回复
使用API得到行数:
LineCount=SendMessage(text1.hwnd,EM_GETLINECOUNT,0,ByVal 0&)
使用前要声明。

7,762

社区成员

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

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