继我自定义格式剪贴板上的post之后,我正在考虑编写自己的自定义剪辑板监视组件的可能性。
声明之前:
ClipboardWindow:=SetClipboardViewer(Form1.Handle);
我在示例代码中看到过,我研究了以下片段:
OpenClipboard(Form1.Handle);
EmptyClipboard;
CloseClipboard;
而其他人根本不包括清洁代码。我很困惑。
我相信Clipbrd.TClipboard.Clear
就像VCL一样。
我的问题是:
在加入clipboard chain
之前清除剪贴板是强制性的吗?
答案 0 :(得分:3)
不,无需清除剪贴板。的确,你不应该。其他剪贴板监视器将不必要地对更新作出反应,并且用户可能想要粘贴您刚刚销毁的那个东西。 此外,剪贴板链监控还有很多,而不仅仅是将自己添加到链中。您必须将事件传递到下一个窗口(来自SetClipboardViewer的结果句柄),并且您必须在应用程序退出时自行从链中删除。此外,您需要避免不必要地阻止剪贴板。通常,这意味着等待注册剪贴板事件,直到您准备好实际处理事件为止。例如,如果您打算随后打开一个对话框询问用户他想要存储数据的位置,是否有许可证密钥等,请不要将其作为启动中的第一件事。
我有提示,以及常见的陷阱: http://www.clipboardextender.com/developing-clipboard-aware-programs-for-windows/6
答案 1 :(得分:0)
规则尽可能简单:如果要删除剪贴板内容(以便其他应用程序无法使用它),请将其删除。如果没有,请保留它。
您不知道您的用途是想保留数据还是您想要实现某些想要的东西? 你知道那些应用程序(Paint Shop Pro就是其中之一)正在问:“你在剪贴板中留下了一个大图像(10MB数据)。你想保留它还是清除它?” 你可以做类似的事情。 :)