【发布时间】:2012-09-20 04:49:39
【问题描述】:
我正在尝试做以下技巧:
- 我将
IDataObject*设置到剪贴板中,所以我使用OleSetClipboard()将其设置到剪贴板中。 - 我有另一个
CLIPFORMAT我想添加到剪贴板,但我不能用OleSetClipboard()来做,因为我收到的IDataObject*没有实现SetData()方法。所以,为了克服这个限制我OpenClipboard()和GetClipboardOwner(),这样,我可以在没有EmptyClipboard()的情况下先将SetClipboardData()到剪贴板。
现在,一切正常,但发生的情况是OleGetClipboard() 不会返回我使用SetClipboardData() 放置在剪贴板中的数据,但我可以使用GetClipboardData()。
我可以想象为什么会发生这种情况(它只是返回IDataObject*),所以我尝试OleFlushClipboard() 删除IDataObject*,并再次OleGetClipboard() 让操作系统重建一个新的IDataObject*,并且它仍然不包含SetClipboardData()添加的CLIPFORMAT。
有人知道如何解决这个问题吗?还是不同的把戏?甚至解释为什么它会这样工作?谢谢
【问题讨论】:
标签: c++ windows winapi clipboard ole