易语言, 取两点水平坐标值的问题!

易语言, 取两点水平坐标值的问题!,第1张

意思是比如打开一个记事本,里面有很多的内容,光标在第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 易语言 获取鼠标点击时的坐标、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9868660.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存