2

如何为多个鼠标显示另一个光标?

我有两个 TMemo,两个可以输入各自 TMemo 的键盘,2 个鼠标,我需要 2 个光标。

如果假设,我已经可以检测出哪个鼠标是哪个。我怎样才能让我自己的光标跟随它。(使用 Delphi)可能沿着Multipoint的路线

作为替代方案,是否有任何软件可以渲染多个光标。喜欢CPNMouse吗?

编辑:我发现我可以在 windows 中使用 mouse_event 函数,但我仍然没有光标的视觉表示。

4

3 回答 3

3

光标只是资源。这是可以使用的标准游标的一个很好的列表。TControl 定义一个光标属性,该属性可以设置为在给定控件上时应该使用的光标。您还可以使用 Screen.Cursor 来控制整个应用程序光标。

要定义自定义光标,请使用以下代码。

{$R MyCustomCursors.RES}

const
 crCustom1 = 1;
 crCustom2 = 2; 

...

  Screen.Cursors[crCustom1] := LoadCursor(hInstance, 'CUSTOM1');
  Screen.Cursors[crCustom2] := LoadCursor(hInstance, 'CUSTOM2');

...

默认情况下,Delphi 并未设计用于处理多个鼠标指针,但我怀疑大多数环境都不是。您提到的 SDK 是我看到的关于在单个应用程序中同时使用多个鼠标的唯一信息来源。然而,它只是 .NET,所以使用它需要 Delphi Prism。

如果您想为多个鼠标提供自己的支持,可以使用使用 WM_INPUT 的相同技巧。Windows 会将两只鼠标视为相同。您必须手动为第二个鼠标自定义绘制鼠标光标。

于 2010-06-22T03:41:32.873 回答
0

Windows 不支持多个鼠标或键盘。由于每个进程只有 1 个输入队列,Windows 将所有相似的输入设备视为同一个设备。这是无法改变的。故事结局。时期。

但即使你不能在系统范围内做到这一点——你仍然可以在一个特定的应用程序中做到这一点。您需要编写一个特殊的驱动程序并仅为第二个鼠标安装它。此驱动程序不应将鼠标移动传递给通常的使用者(输入队列),而是将输入直接重定向到您的应用程序。

您可以使用已经编写好的驱动程序——例如,您已经提到的这个或那个。

于 2010-06-22T08:23:42.553 回答
0

它可以通过做一些非常快的事情来从原始光标虚拟地模拟它的动作

于 2015-06-09T14:02:46.240 回答