Windows的窗口系统仅支持一个“ true”光标:这是2D图形芯片组的低级功能(这就是为什么光标不出现在屏幕截图中的原因)。Windows留出一个单独的视频内存区域来保存光标的位图:具有AND / XOR通道的DDB(与设备有关的位图)(用于索引不透明度和颜色反转),或32bpp RGBA表面(对于alpha透明)游标(这是实现“显示游标阴影”功能的方式)。我的理解是,在输出设备(例如,用于VGA输出的DAC或任何DVI和HDMI使用的设备)“扫描”时,光标会应用于实际的输出图像,
为了使延迟最小化,还必须对光标使用此特殊技巧。如果您编写了一个绘制到Windows表面的程序(例如,使用GDI或什至通过OpenGL或Direct3D),您会发现它落后于实际光标几毫秒,这对于用户来说非常容易注意到(这就是现代RTS的原因)游戏使用此硬件光标功能,而不是自己重新实现。
我知道无法扩展此功能-您将不得不反汇编修改Windows和图形驱动程序以实现绘制多个光标的功能。
那是事物的表现方面。实际的应用程序级别对多个游标的支持也很棘手-请记住,游标移动对应于与鼠标相关的各种窗口消息,这些消息正发送到hWnds。两个游标的问题是这些消息将发生冲突,尽管从理论上讲,只要将它们正确地序列化到单个队列中,它们就可以工作。应用程序会出现问题,许多人会假设,例如,只有一个控件可以一次处于Hover状态,如果您有多个游标,则应用程序将只考虑最新的游标消息。
我可能建议您看看Windows 7中引入的Windows多点触摸支持,它确实支持多个同时的“光标”,尽管它是针对手指而不是鼠标的。
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |