如何 释放鼠标捕获 ?

PDD123 2011-07-04 05:50:27
我的程序显示了一个图片,鼠标在图片上移动的时候,会显示图片上对应某点的坐标,当鼠标不在图片上,就不显示坐标。
于是我响应了鼠标移动消息,当鼠标在图片上时,设置鼠标捕获 ::SetCapture(this->m_hWnd);,当鼠标在图片之外,我就释放鼠标捕获 ::ReleaseCapture();。
出现问题了,设置了鼠标捕获之后,如果鼠标还在图片内,但是切换了另外一个窗口在最前,如果不把鼠标移动到图片之外,就无法点击另外的窗口。本来我想响应失去焦点消息WM_KILLFOCUS来释放鼠标捕获,但是发现不行。
请问,应该如何在切换窗口时,释放鼠标捕获呢?
...全文
179 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
PDD123 2011-07-06
  • 打赏
  • 举报
回复
应该是搞定了,GetCursorPos 得到当前鼠标位置 WindowFromPoint 得到某位置的最前面的窗口的句柄,对比得到的句柄和显示图片的窗口的句柄,如果不一样就释放鼠标捕获。
  • 打赏
  • 举报
回复
显示鼠标坐标时,判断此窗口是否为顶层窗口。
if(GetForegroundWindow() == m_hWnd)
{}
PDD123 2011-07-04
  • 打赏
  • 举报
回复
似乎不行。忘记了说一点,切换窗口时,有可能是把自己程序的另外的窗口切换到最前了。
healer_kx 2011-07-04
  • 打赏
  • 举报
回复
应该是ActiveApp消息。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧