当应用程序以私有格式(CF_PRIVATEFIRST
到CF_PRIVATELAST
)将数据放在剪贴板上时,它必须释放它以响应WM_DESTROYCLIPBOARD
,因为对于这些格式,系统赢了不要自动完成。
从逻辑上讲,任何其他应用程序都不会看到一个应用程序使用的私有格式(即使它们在私有范围内使用相同的格式代码)。
a)系统如何执行此操作?它是否使用剪贴板所有者(窗口句柄)?
b)当所有者窗口关闭时,是否会自动从剪贴板中删除私有格式项? (使用剪贴板查看器似乎没有。)那么当窗口句柄被重用时会发生什么?
除了释放内存以响应WM_DESTROYCLIPBOARD
之外,还需要在应用程序退出时释放它吗? (我知道剪贴板使用全局内存,以便可以从任何进程访问数据,所以我猜测当创建它的进程退出时它不会自动释放。)
理想情况下,您只需删除私有格式,并在应用程序退出时保留任何标准格式,但我找不到API调用,只从剪贴板中删除一种格式。有没有一种简单的方法可以做到这一点,除了清空剪贴板,然后明确写回非私有格式?
我搜索了MSDN文档和Google,无法找到这些问题的答案,所以这里有人可以帮忙吗?
(我知道注册的剪贴板格式。我不是在问这些。)
答案 0 :(得分:0)
非权威性答案,但它可以指导您的测试以确定真相: