2

如果使用 COleDataSource 和 COleDataObject,则为希望在拖放操作中存储数据的每种剪贴板数据格式分配一些全局内存。在放置代码中,您查询对象是否具有所需格式的数据,然后可以访问并释放该内存。

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

事实上,我应该手动释放这些数据,还是让 MFC/Ole 自动完成?

4

1 回答 1

2

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

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

于 2009-12-08T18:32:29.510 回答