看流星社区

 找回密码
 注册账号
查看: 2324|回复: 0

获取光标位置方法研究

[复制链接]

该用户从未签到

发表于 2017-6-3 14:26:30 | 显示全部楼层 |阅读模式
获取光标位置方法研究
johnchen

获取光标位置可以使用GetCaretPos函数获取位置,也可以通过GetGUIThreadInfo函数获取位置。1、GetCaretPos函数获取光标位置,实现代码: CPoint point; CRect rect; GetWindowRect(&amp;rect); HWND hwnd=::GetFocus(); HWND pHwnd=::GetForegroundWindow(); AttachThreadInput(GetCurrentThreadId(),::GetWindowThreadProcessId(pHwnd,NULL),TRUE); ::GetCaretPos(&amp;point); ::ClientToScreen(hwnd,&amp;point); AttachThreadInput(GetCurrentThreadId(),::GetWindowThreadProcessId(pHwnd,NULL),FALSE);2、GetGUIThreadInfo函数获取光标位置,实现代码: #include <winable.h> HWND hwnd; GUITHREADINFO pg; POINT point;//光标位置 pg.cbSize=48; ::GetGUIThreadInfo(NULL,&amp;pg); hwnd=pg.hwndCaret; if (pg.hwndCaret) { point.x=pg.rcCaret.right; point.y=pg.rcCaret.bottom; ::ClientToScreen(pg.hwndCaret,&amp;point); }
//CString str; //str.Format("x=%d,y=%d",point.x,point.y); //AfxMessageBox(str);
总结:GetCaretPos函数能获取WIN32一些程序窗口中光标位置,但是在IE7和WORD里GetCaretPos是不能获取光标位置的。而GetGUIThreadInfo函数获取窗口坐标位置是没有限制,不过在VCL、GTK、SWT界面框架的窗口具体能不能得到位置没有试过。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-28 22:28

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表