用户名: 密码: 验证码: gdcode 注册

取得TextBox、RichTextBox光标所在的行和列(支持中文)修正

时间:2007-06-14 来源: 作者: 【字体: 减小 增大点击: 收藏 | 投稿
  

´支持中文,一个汉字算一列
´有问题请给我写邮件
´作者:Matrix
´邮件:ASPBIT@163.COM
´2003-01-24修正了马虎的错误
´************************************************************

财管家.园.fs119.net

OptionExplicit

财.管家园.fs119.net

PublicConstWM_USER=&H400
PublicConstEM_EXGETSEL=WM_USER52

财管,家园,fs119.net

PublicConstEM_LINEFROMCHAR=&HC9
PublicConstEM_LINEINDEX=&HBB
PublicConstEM_GETSEL=&HB0

财软.联盟.fs119.net

PublicTypeCHARRANGE
cpMinAsLong
cpMaxAsLong
EndType 财软联盟,fs119.net

PublicTypePOINTAPI
xAsLong
yAsLong
EndType 财软联 盟 fs119.net

PublicDeclareFunctionSendMessageLib"user32"Alias_
"SendMessageA"(ByValhWndAsLong,ByValwMsgAs_
Long,ByValwParamAsLong,lParamAsAny)AsLong 财.软联盟.fs119.net

PublicDeclareSubCopyMemoryLib"kernel32"Alias_
"RtlMoveMemory"(pDstAsAny,pSrcAsAny,_
ByValByteLenAsLong) 财软 联盟 fs119.net


´取得光标所在的行和列
PublicFunctionGetCurPos(ByRefTextControlAsControl)AsPOINTAPI
DimLineIndexAsLong
DimSelRangeAsCHARRANGE
DimTempStrAsString
DimTempArray()AsByte
DimCurRowAsLong
DimCurPosAsPOINTAPI

财 管家园 fs119.net

TempArray=StrConv(TextControl.Text,vbFromUnicode)

财管 家园 fs119.net

´取得当前被选中文本的位置适用于RichTextBox
´TextControl用EM_GETSEL消息
CallSendMessage(TextControl.hWnd,EM_EXGETSEL,0,SelRange) 财软联 盟 fs119.net

´根据参数wParam指定的字符位置返回该字符所在的行号
CurRow=SendMessage(TextControl.hWnd,EM_LINEFROMCHAR,SelRange.cpMin,0) 财软联盟,fs119.net

´取得指定行第一个字符的位置
LineIndex=SendMessage(TextControl.hWnd,EM_LINEINDEX,CurRow,0)

财管家园,fs119.net

IfSelRange.cpMin=LineIndexThen
GetCurPos.x=1
Else 财.管家园.fs119.net

TempStr=String(SelRange.cpMin-LineIndex,13) 财软,联盟,fs119.net

´复制当前行开始到选择文本开始的文本
CopyMemoryByValStrPtr(TempStr),ByValStrPtr(TempArray)LineIndex,SelRange.cpMin-LineIndex
TempArray=TempStr 财管,家园,fs119.net

´删除无用的信息
ReDimPreserveTempArray(SelRange.cpMin-LineIndex-1)

财软 联盟 fs119.net

´转换为Unicode
TempStr=StrConv(TempArray,vbUnicode)

财,软联盟,fs119.net

GetCurPos.x=Len(TempStr)1
EndIf
GetCurPos.y=CurRow1
EndFunction

财.软联盟.fs119.net


文章摘自网络,如有侵权,请与我们联系.
数据统计中!!
上一篇:程序只运行一个实例,并且把前一个激活
下一篇:利用动态创建自动化接口实现VB的函数指针调用

精品课程推荐



用户名: 密码: 匿名? 注册