2009-12-08 76 views
2

如果使用COleDataSource & COleDataObject,则为每个剪贴板数据格式分配一些全局内存,以便在拖放操作中存储数据。在下拉代码中,您可以查询对象是否具有所需格式的数据,然后可以访问该内存。MFC/OLE拖放 - 释放全局分配的内存

但是作为放置目标,您无法知道可能具有拖动源关联数据的所有格式。那么如何清除为每种格式的拖动分配的所有内存?

其实,我是否假设要手动释放这个数据,或让MFC/Ole自动执行它?

回答

2

将句柄传递给COleDataSource后,它拥有内存,而不是你。您不需要释放全局内存。

您应该使用BeginEnumFormats和GetNextFormat枚举COleDataObject对象中的可用数据格式,直到找到您感兴趣的数据格式。例如,如果您了解CF_HTML,则不需要处理CF_UNICODETEXT或CF_TEXT,除非用户指示您放弃HTML格式化,只能进行纯文本的放置/粘贴。