鼠标状态winapi

Posted

技术标签:

【中文标题】鼠标状态winapi【英文标题】:Mouse state winapi 【发布时间】:2011-01-21 11:59:06 【问题描述】:

有没有办法在 C++ 中使用 winapi 获取鼠标状态(位置、按钮状态)? 我不想使用 Windows 消息(WM_MOUSEMOVE、WM_LBUTTONDOWN 等)。

谢谢!

【问题讨论】:

你不想使用它们等等? 【参考方案1】:

听起来您正在寻找GetCursorInfo 和GetKeyState。后者您调用 virtual key codes 指定感兴趣的鼠标按钮。

【讨论】:

【参考方案2】:

如果你只需要光标位置,你可以使用GetCursorPos()。请记住,GetCursorInfo() 和 GetCursorPos() 都返回屏幕坐标。使用ScreenToClient() 转换为客户区偏移量。

虽然 OP 不想使用 Windows 消息,但我只是想提一点作为旁注。 我发现将光标位置作为消息处理程序的一部分(例如 WM_SETCURSOR),大多数文献建议使用GetMessagePos() 在发送消息时检索光标的位置。但是,它的位置 之前 鼠标移动,而不是之后。因此,当尝试在某个区域上进行鼠标悬停检测时,位置返回“滞后”像素。

【讨论】:

我个人尽量避免调用GetCursorPos,因为在 WOW64 下的 64 位 Vista(可能是 64 位 XP)上存在错误。当您传递的指针位于高地址空间(> 2GB)时,该函数将失败。这在 Windows 7 中已修复,但我仍然更喜欢 GetCursorInfo,因为它适用于任何地方。 出色的观察力。我正在将此添加到我的笔记中。这肯定是在调试时让你大吃一惊的事情之一。

以上是关于鼠标状态winapi的主要内容,如果未能解决你的问题,请参考以下文章

鼠标的点击事件&点击的5中状态

鼠标状态

鼠标移入视频播放,鼠标移出播放停止,恢复到原来状态

使用状态栏将鼠标悬停在按钮上

控制鼠标状态

如何用CSS 设置 当鼠标移动到菜单时,该按钮变色,鼠标点击后,页面停留在鼠标滑过时的状态!!很急!