MFC如何知道光标在那个控件上 用哪个函数?谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC如何知道光标在那个控件上 用哪个函数?谢谢相关的知识,希望对你有一定的参考价值。

如题

WindowFromPoint 函数功能:该函数获得包含指定点的窗口的句柄。
函数原型:HWND WindowFromPoint(POINT Point);
参数:
Point:指定一个被检测的点的POINT结构。
返回值S:返回值为包含该点的窗口的句柄。如果包含指定点的窗口不存在,返回值为NULL。如果该点在静态文本控制之上,返回值是在该静态文本控制的下面的窗口。
备注:WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内。应用程序应该使用ChildWindowFromPoint函数进行无限制查询。
速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本:头文件:Winuser.h;库文件:user32.lib。

再结合 OnMouseMover ,就能判断出来了吧

参考资料:http://baike.baidu.com/view/1080360.htm

参考技术A GetFocus(),正常情况下得到的就是光标所在的控件。

但是有些扩展控件能自己实现闪烁光标,那你是没法得到的。
参考技术B 有一个比较笨的方法,在每个控件窗口函数中添加一个WM_MOUSEMOVE 消息,响应函数中返回一个值,通过这个值来判断; 参考技术C 没有这样的函数,你可以用其他方法实现 参考技术D ::GetFoucs()

例如
if(::GetFoucs() == GetDlgItem(ID)->m_hWnd)


vc MFC EDIT控件 设置光标位置

VC里是不是有个函数可以设置光标位置的呢?

如题把IDC_EDIT2的光标放在最后。

应该先得到文本长度,然后用 SetSel 方法。
假如得到的长度是 dwLen ,那么可以这样:
((CEdit*)GetDlgItem(IDC_EDIT2))->SetSel(dwLen,dwLen,TRUE);
参考技术A 在vc6.0的资源对话框里,按Ctrl+D,将在每个控件上出现焦点输入次序,你要做的就是把IDC_EDIT2上的数字调成最大 参考技术B SetFocus()可以。。GetDlgItem(IDC_EDIT2)->SetFocus(); 参考技术C 使用SetSel(-1, -1)就ok了 参考技术D 对 我记得有个函数setsel() 可以让你设定字串的选定状态
建议你看看msdn或者mfc类库

以上是关于MFC如何知道光标在那个控件上 用哪个函数?谢谢的主要内容,如果未能解决你的问题,请参考以下文章

MSVS 2008 如何MFC添加控件?

vc MFC EDIT控件 设置光标位置

如何获取鼠标在控件中位置.MFC和API都行 谢谢

请问如何在c#中用WPF调用Winform变写的用户控件,知道的请给予解说,谢谢!

MFC如何让鼠标移动到按钮上马上改变鼠标形状为手型

vs2013怎么用mfc添加菜单项消息响应函数