
意思是比如打开一个记事本,里面有很多的内容,光标在第10行,
但记事本未最大化,求高手赐教如何知道光标在屏幕上的x,y坐标的值?
谢谢
我找到以下代码,但好像要定义指针型变量,请问易如何定义指针型变量?
注意:当前光标就是当前焦点,何谓光标,就是一个类似:“|”的东西!
我现在需要得到它所在的坐标!
声明:发GetCursorPos不要来,视力不好的不要来,发WindowFromPoint的不要来! 看清楚说明!
2楼: 呵呵
GetCaretPos 用于获得光标相对于客户区的坐标
ClientToScreen 用于将客户区坐标转换为屏幕坐标
//----------------------------------------------
var
CurPoint, ScreenPoint: TPoint;
begin
GetCaretPos(CurPoint);
ScreenPoint := ClientToScreen(CurPoint);
label1Caption := inttostr(ScreenPointX)+':'+inttostr(ScreenPointY);
end;
3楼: 你要的结果就是pCaret,最后用SetBound,显示窗体。var
rect: TRect;
pCaret: TPoint;
focushld,windowhld:hwnd;
threadld:dword;
begin
//获得当前活动窗口的句柄
windowhld := GetForegroundWindow;
//获得窗口的进程名
threadld := GetWindowThreadProcessId(Windowhld,nil);
//将输入法的窗口进程附到活动窗口的进程中
AttachThreadInput(GetCurrentThreadId,threadld,true);
//获得当前的输入的窗口的句柄
字串9
focushld := GetFocus;
if focushld = 0 then Exit;
//获得光标的位置相对于活动窗口的坐标
GetCaretPos(pCaret);
//获得输入焦点窗口的区域
GetWindowRect(focushld,rect);
//获得光标位置相对于屏幕的坐标
pCaretx := pCaretx + rectLeft;
pCarety := pCarety + rectTop;
//分离进程的附属
AttachThreadInput(GetCurrentThreadId,threadld,false);
//设置输入法的位置
SetBounds(pCaretx, pCarety, Width, Height);
Show;
end;
4楼: GetMessagePos 返回最后消息的光标位置
LookupIconIdFromDirectory 返回图标或光标ID坐标 SetConsoleCursorPosition 设置控制台光标位置
GetClipCursor 返回限制光标的矩形的坐标
GetCursorPos 获取鼠标坐标
ClientToScreen 将窗体坐标转换为屏幕坐标
ScreenToClient 将屏幕坐标转换为窗体坐标
GetForegroundwindow获取当前激活的窗口
AttachThreadInput注入对方
GetFocus获取光标所在的窗口
GetWindowPos获取光标窗口的屏幕坐标+ 字串4
GetCaretPos获取光标坐标即最后光标所在的屏幕坐标
用mapwindowpoints能把窗体内的坐标转换为屏幕上的坐标
具体用法:
int MapWindowPoints(
HWND hWndFrom, // handle of window to be mapped from
HWND hWndTo, // handle of window to be mapped to
LPPOINT lpPoints, // address of structure array with points to map
UINT cPoints // number of structures in array
);
关于mapwindowpoints()我有个锁定光标范围的例子:
procedure TForm1Button1Click(Sender: TObject);
var
Rect:TRect;
begin
Rect:=Button2BoundsRect;
MapWindowPoints(Handle,0,Rect,2);//Rect为矩形区域,两点表示,所以最后参数为2,如果只转换一个点,最后参数为1;第一个参数代表窗体句柄,第二个参数为0时为屏幕
ClipCursor(@Rect);
end;
procedure SomePrc();
var
TempPoint: TPoint;
begin
GetCursorPos(TempPoint); //此句得到的是屏幕象素点的坐标
WindowsScreenToClient(Handle, TempPoint); //此句就是把屏幕坐标转化为句柄为Handle的窗体的坐标
WindowsClientToScreen(Handle, TempPoint); //此句就是把Handle句柄的窗体的坐标再化为屏幕坐标
字串1
-----------------------------------------------------------------------------------
我写了段E程序,但是会出错,跪求高手帮改一改,再传上来。
复件 复件 21e (4 K) 下载次数:4
不用大家帮忙了。我已搞定
已搞定e (4 K) 下载次数:24
版本 2
支持库 EdirectX
子程序 __启动窗口_创建完毕
输入设备1选择输入设备 (真, 假, 假)
输入设备1置刷新时间 (50)
输入设备1初始化 (0)
子程序 _输入设备1_鼠标按键被改变
参数 键值, 整数型
参数 键状态, 整数型
局部变量 x, 整数型
局部变量 y, 整数型
x = 取鼠标水平位置 ()
y = 取鼠标垂直位置 ()
_启动窗口标题 = “X坐标” + 到文本 (x) + “ ” + “X坐标” + 到文本 (y)
不懂加QQ344799981
以上就是关于易语言, 取两点水平坐标值的问题!全部的内容,包括:易语言, 取两点水平坐标值的问题!、api 易语言 获取鼠标点击时的坐标、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)