【问题标题】:How to tell if mouse pointer icon changed如何判断鼠标指针图标是否改变
【发布时间】:2008-12-11 05:50:00
【问题描述】:

我正在使用 Delphi 7 为 Windows 编写屏幕录制应用程序,并希望知道鼠标指针何时在我的应用程序中发生变化(例如从普通指针变为调整大小指针等)。

目前我正在做的是每次鼠标移动(以及在计时器上)时将鼠标指针绘制到内存位图上,并与我绘制的最后一个位图进行逐个像素的比较。

虽然比较相当快(大约 2-5 毫秒),因为它经常发生(每次鼠标移动)它加起来。我认为必须有一种更快、更简单的方法!

【问题讨论】:

    标签: windows mouse capture


    【解决方案1】:

    你有光标的句柄,对吧?如果它与您之前的句柄值相同,那么我认为假设它看起来也一样是合理的。如果光标看起来不同,它将具有不同的句柄值。

    对于标准系统游标,这当然应该是正确的。如果您正在录制的应用程序正在运行时创建新光标,那么 也许 它可以更新当前光标的外观,而无需在操作系统中实际创建新光标对象(从而保持相同的句柄值),但我认为这不太可能,特别是因为SetCursor 在光标没有改变时立即退出,并且我希望 API 函数不会进行您试图避免的图形比较,任何一个。它只是比较 HCursor 的值。

    【讨论】:

    • 我错了。我开始注意到仅仅检查句柄是不够的,因为句柄似乎只在悬停在我的应用程序上时才会改变。如果我在将鼠标悬停在其他应用程序上时每隔几毫秒将当前光标句柄打印到屏幕上,则光标更改时它实际上并没有改变。 :(
    • 当光标位于另一个应用程序上时,您如何获得光标句柄? MSDN 说调用 GetCursorInfo 而不是 GetCursor。
    • 啊,你是对的。我在比较 GetCursor 的结果。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多