richedit的使用问题(35分)

  • 主题发起人 主题发起人 W1979
  • 开始时间 开始时间
W

W1979

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在完全把大富翁当在线帮助来用的:)
i,j,k,l:integer;
j:=sendmessage(richedit1.handle,em_posfromchar,i,0);////出错
k:=lo(j);
l:=hi(j);
想得到某个字的位置,怎么在做记号那里就出错?
 
var
atPos:Longint;
AtPoint:TPoint;
begin
atPos:=RichEdit1.Perform(EM_CHARFROMPOS,0,Longint(@mousePoint));
end;
 
我写的试验程序如下:
放在一个TTimer的OnTimer中:
var
atPos:Longint;
AtPoint:TPoint;
i:integer;
begin
getcursorpos(atpoint);
mapwindowpoints(0,richedit1.handle,atpoint,1);
atPos:=RichEdit1.Perform(EM_CHARFROMPOS,0,longint(@atPoint));
//用 atpos:=sendmessage(richedit1.handle,EM_CHARFROMPOS,0,longint(@atPoint));亦可
edit1.text:=inttostr(lo(atpos));
edit2.text:=inttostr(hi(atpos));//
end;
两个颖问:
* Msdn光盘里讲的em_posfromchar的lparam参数为0的,wparam中是字符的索引值
我照样做但是出错,而象上面那样倒过来反而好了
*本以为hi(atPos)里是行数,但却是0.
不知是为什么?
 
呵呵,你到底是EM_CHARFROMPOS还是EM_POSFROMCHAR
 
到底想干吗?
附, LoWord, hiWord
 
真丢人,把em_posfromchar和em_charfrom弄混了
又回到我开始的问题,这句话
sendmessage(richedit1.handle,em_posfromchar,wparam(j),0);
为什么出错?
 
多人接受答案了。
 
后退
顶部