MFC / OLE Drag&丢弃 - 释放全局分配的内存

时间:2009-12-08 13:43:09

标签: mfc drag-and-drop ole

如果使用COleDataSource& COleDataObject,您为每个要在拖放操作中存储数据的剪贴板数据格式分配一些全局内存。在删除代码中,您将查询对象是否包含您想要的格式的数据,然后可以访问&释放那段记忆。

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

事实上,我应该在drop上手动释放这些数据,还是让MFC / Ole自动执行此操作?

1 个答案:

答案 0 :(得分:2)

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

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