获取光标位置方法研究

 获取光标位置方法研究

                                       johnchen

 

获取光标位置可以使用GetCaretPos函数获取位置,也可以通过GetGUIThreadInfo函数获取位置。
1、GetCaretPos函数获取光标位置,实现代码:
     CPoint point;
     CRect rect;
     GetWindowRect(&rect);
     HWND hwnd=::GetFocus();
     HWND pHwnd=::GetForegroundWindow();
     AttachThreadInput(GetCurrentThreadId(),::GetWindowThreadProcessId(pHwnd,NULL),TRUE);
    ::GetCaretPos(&point);
     ::ClientToScreen(hwnd,&point);
     AttachThreadInput(GetCurrentThreadId(),::GetWindowThreadProcessId(pHwnd,NULL),FALSE);
2、GetGUIThreadInfo函数获取光标位置,实现代码:
     #include   <winable.h>
    HWND hwnd;
    GUITHREADINFO pg;
    POINT point;//光标位置 
    pg.cbSize=48;
   ::GetGUIThreadInfo(NULL,&pg);
    hwnd=pg.hwndCaret;
    if (pg.hwndCaret)
    {
      point.x=pg.rcCaret.right;
      point.y=pg.rcCaret.bottom;
      ::ClientToScreen(pg.hwndCaret,&point);
     }

   //CString str;
   //str.Format("x=%d,y=%d",point.x,point.y);
   //AfxMessageBox(str);

总结:GetCaretPos函数能获取WIN32一些程序窗口中光标位置,但是在IE7和WORD里GetCaretPos是不能获取光标位置的。而GetGUIThreadInfo函数获取窗口坐标位置是没有限制,不过在VCL、GTK、SWT界面框架的窗口具体能不能得到位置没有试过。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值