RichEdit中如何实现拖拽? |
尚未結案
|
feeling
一般會員 發表:1 回覆:4 積分:1 註冊:2003-06-07 發送簡訊給我 |
在RichEdit编辑框中选中若干字符,用鼠标拖拽到该编辑框的其他位置,松开鼠标,选中的字符就跑到了当前鼠标所在的位置处。 难点是如何确定鼠标所在处的文本位置,我是这样处理的:
int __fastcall TForm1::GetSelstartByPos( TRichEdit *RE, int X, int Y )
{
TPoint P = Point(X, Y);
return SendMessage(RE->Handle, EM_CHARFROMPOS, 0, (long)&P );
}
但是,该方法返回的信息总是有问题! // 获取当前光标在目标对象中的位置(拖拽事件中)
TPoint P;
if ( GetCursorPos(&P) )
{
//取鼠标位置的 Index
P = ScreenToClient(P);
RichEdit1->SelStart = GetSelstartByPos( RichEdit1, P.x, P.y );
//ShowMessage( RichEdit1->SelStart ); // 总是不对???
} RichEdit1->SelText = "×××";
这样情况稍微有所改善,但是只能够获取之前的光标位置,还是不能够动态更改:
TPoint P;
if ( GetCursorPos(&P) )
{
P = ScreenToClient(P);
SendMessage( RichEdit1->Handle, WM_LBUTTONDOWN, MK_LBUTTON, GetSelstartByPos( pRE, P.x, P.y ) );
SendMessage( RichEdit1->Handle, EM_REPLACESEL, 1, (long)TreeNode->Text.c_str() );
} NULL 發表人 - feeling 於 2003/11/04 19:15:24
------
NULL |
feeling
一般會員 發表:1 回覆:4 積分:1 註冊:2003-06-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |