【问题标题】:client to screen and setcursorpos to firemonkey客户端屏幕和 setcursorpos 到 firemonkey
【发布时间】:2013-08-26 00:49:13
【问题描述】:

我正在尝试将一些代码从 delphi 转换为 firemoneky,但遇到了一些我不确定如何在 firemoneky 中执行的操作。 SetCursorpos

  setcursorpos(p.x,p.y);

知道如何在 firemonkey 中做到这一点吗?

我试过game.SetCursor(p.x,p.y);
但它不喜欢它说 setcursor 是未定义的.. 也确实将 fmx.plateform 添加到我的使用列表中。

【问题讨论】:

  • 奇怪,有Platform.GetMousePos,但“SetMousePos”却不见踪影..
  • 有一个 platform.setcursor 但不知道为什么没有。还尝试了 getmousepos 只是为了看看它是否有效,它也不会。我假设单位是 fmx.plateform?游戏是论坛的名称
  • 如果不存在,您可以使用 OSX 中的 CGWarpMouseCursorPosition 方法和 Windows 中的 SetCursorPos 方法编写自己的。
  • 在 FMX 源中搜索对 SetCursorPos 的调用。如果存在,则很可能它在您需要调用的函数中。否则,您需要在代码中调用 SetCursorPos。如果您的应用程序是 x-plat,请按照 RRUZ 的说明进行包装。如果没有,请继续调用它。
  • SetCursor 不应该工作吗?我认为它会,但我设置错了吗?

标签: delphi delphi-xe2 firemonkey


【解决方案1】:

XE2 FMX 源代码中没有对SetCursorPos Win32 API 函数的调用。从中我得出结论,FMX 框架中没有任何东西封装了该功能。

您需要在 Windows FMX 项目中直接调用 SetCursorPos。如果您面向其他平台,则需要为该平台调用适当的 API。

【讨论】:

  • 那么最后一句适用。
  • 感谢您的帮助,我不知道该怎么做,但至少我有一个方向。在接受答案之前,仍然需要等待有关如何执行此操作的示例或更多详细信息
  • 您不应该希望得到有关 iOS 详细信息的答案,因为问题与 iOS 无关。该问题是关于 FMX 的独立于平台的问题。如果您对特定于平台的 iOS 详细信息感兴趣,您应该询问。最后,问问自己光标位置在 iOS 上意味着什么?你见过你的 iPhone 显示光标吗?
  • 这是插入符号。光标不同。在台式机上,四处移动鼠标。移动的是光标。现在找到一个编辑控件并输入文本。标记插入点的竖线是插入符号。请注意,插入符号与光标无关。
  • 在原始程序中,我假设它是一个 VCL 程序,SetCursorPos 是什么。我的假设是这个函数:msdn.microsoft.com/en-us/library/windows/desktop/ms648394.aspx我的假设不正确吗?
【解决方案2】:

我发现了一些东西,但它只适用于 Windows: - 你需要制作一个数据模块 - 将它的类型设置为 VCL(这对我来说是可能的,因为我使用的是 delphi XE 10.1) - 将 Windows 单元添加到用途中 - 像这样在 DataModul 中创建一个过程

`procedure TMouseController.SetCursorPosition(x, y: integer);`
begin
  SetCursorPos(x, y);
end;

end.

-然后在程序中这样使用:

`procedure TMainForm.Form3DShow(Sender: TObject);
var
  Center: TPoint;
begin
  Center.SetLocation(Screen.Width div 2, Screen.Height div 2);
  MouseController.SetCursorPosition(Center.X, Center.Y);
end;`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-08
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多