[问题] MFC的鼠标事件

楼主: student23489 (云§淡)   2020-05-24 12:57:19
开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Visual Studio 2019
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
MFC
问题(Question):
目前有个问题是要抓鼠标所在位置的座标
小弟是使用OnMouseMove这个函式,发现只能抓取视窗内鼠标座标,无法抓到视窗外
(如桌面)的鼠标位置
想请问一下有什么办法能实现吗? 因为刚接触MFC不太了解
以下是我的程式码
void CmouseMoveCurPosDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CString str;
ClientToScreen(&point);
str.Format(_T(X: %04d, Y: %04d), point.x, point.y);
dc.TextOutW(10, 10, str);
CDialogEx::OnMouseMove(nFlags, point);
}
会选MFC是因为公司要开发内部使用的视窗程式,而主管要求使用MFC,因为他比较熟悉
MFC的接口
作者: binary   2020-05-24 15:53:00
使用hook呢?
作者: WPC001 (好闷, 迷惘~~)   2020-05-24 16:25:00
超过你的视窗... 这已经跟MFC无关了... 直接用hook吧参考看看 SetWindowsHookEx() + WH_MOUSE吧...
作者: Schottky (顺风相送)   2020-05-24 20:35:00
一般是用 SetCapture 和 ReleaseCapture 去截收鼠标事件,但这招通常用在拖曳,放开就释放 capture。鼠标移出视窗以后就属于别的视窗了,移动事件被你拦截,会造成其他视窗根本没办法操作,这是你要的效果吗?MSDN 的说明: https://bit.ly/3bTUesB
楼主: student23489 (云§淡)   2020-05-25 22:31:00
感谢上面三位大大提供意见,我研究一下这些方法

Links booklink

Contact Us: admin [ a t ] ucptt.com