我正在使用 Racket 编写一个 UI 应用程序,并且希望能够从其他应用程序拖放项目,例如图像。具体来说,我想从浏览器(例如 Chrome 或 FF)中的网页中拖动图像并将其拖放到canvas%
应用程序中,从而接收原始图像数据(应用程序将在接受 PNG 元数据之前检查丢弃的图像)。
canvas%
类或超类上没有直接与剪贴板事件相关的功能(我可以找到) 。
我熟悉 Swing 和 Win32 等其他框架中的剪贴板 dnd。
看起来clipboard-client%
该类是必需的,但 Racket 文档很难将点连接到将其附加到窗口类之一。
有什么好的教程或示例代码可以参考吗?
更新:我查看了 clipboard.rkt 的球拍源代码(OSX),它似乎只能访问“通用”粘贴板。OSX 有一个单独的粘贴板用于拖放操作。
因此,看起来 dnd 在 OSX 上的 Racket 中是不可能的,我将不得不使用 Objective-C FFI 来实现所需的功能并将我的用户限制为使用 Mac 的用户。
结束这个问题。