MFC/OLE拖放和;释放全局分配的内存

MFC/OLE拖放和;释放全局分配的内存,mfc,drag-and-drop,ole,Mfc,Drag And Drop,Ole,如果使用COleDataSource&COleDataObject,则可以为希望在拖放操作中存储数据的每个剪贴板数据格式分配一些全局内存。在放置代码中,查询对象是否具有所需格式的数据,然后可以访问并释放该内存 但是作为拖放目标,您不可能知道与拖放源关联的数据的所有格式。那么,如何清除为每种格式的拖动分配的所有内存呢 事实上,我应该手动释放drop上的这些数据,还是让MFC/Ole自动释放这些数据?一旦将句柄传递给COleDataSource,它就拥有内存,而不是您。您不需要释放全局内存 应该使用

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

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


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

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

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