网上借鉴的,思路如下
WebBrowser没有mouseMove事件,但它还是由WinControl继承下来的,所以有窗体handle,自定义一个win消息捕获来自此handle的鼠标移动
use MSHTML;
private
{ Private declarations }
FLoaded: Boolean;
procedure AppMsg(var Msg: TagMsg; var Handled: Boolean);
procedure GetContronl;
end;
procedure TForm1FormShow(Sender: TObject);
begin
FLoaded:=False;
ApplicationOnMessage := AppMsg;
wb1Navigate('about:<head><title>标题></title><body>页面内容</body>');
end;
procedure TForm1wb1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
FLoaded:=True;
end;
procedure TForm1AppMsg(var Msg: TagMsg; var Handled: Boolean);
var
mPoint : TPoint;
begin
if IsChild(wb1Handle, MsgHwnd) and
(MsgMessage = WM_MOUSEMOVE) and FLoaded then
begin
GetCursorPos(mPoint);
Caption:=IntToStr(mPointX);
GetContronl;
Handled:=True;
end;
end;
procedure TForm1GetContronl;
var
myPoint: TPoint;
begin
//myPoint := MouseCursorPos;
myPoint := wb1ScreenToClient(myPoint);
Caption := IntToStr(myPointX)+'+'+IntToStr(myPointY);
end;
textbox中有一个属性叫:SelectionStart该属性可以得到当前光标的位置
例如:添加一个textbox和button 运行程序
textbox中的内容是abcdefghigklmn
button的点击事件内容为:
private void button_Click(object sender, EventArgs e)
{
MessageBoxShow(thistextBox1SelectionStartToString());
}
你将光标放到f和g之间
然后点击button
就会d出有个消息框,显示是:6 即光标位置是6
应该先得到文本长度,然后用 SetSel 方法。
假如得到的长度是 dwLen ,那么可以这样:
((CEdit)GetDlgItem(IDC_EDIT2))->SetSel(dwLen,dwLen,TRUE);
不是程序本事说明已经在程序之外了,那就要调用系统的API来获取鼠标位置了。
[DllImport("user32dll")]
internal
static
extern
bool
GetCursorPos(out
Point
lpPoint);
想获取坐标的时候就调用:
Point
mouserPoint
=
new
Point();
GetCurosoPos(out
mouserPoint);
这样鼠标的坐标就存在mouserPoint变量里了
还有一个土办法,就是把你的程序界面全透明,最大化,然后鼠标移动在屏幕其实就是在你的程序里面移动,鼠标点击的时候让程序最小化,使后面的元素能接收到事件就行了。
方法有很多,关键要多想。
以上就是关于delphi 怎么在WebBrowser控件里获得光标的位置全部的内容,包括:delphi 怎么在WebBrowser控件里获得光标的位置、c# 怎么获得 文本框中光标所在的位置、如何获得combobox中edit控件的光标位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)