2009-12-08 68 views
2

如果使用COleDataSource & COleDataObject,則爲每個剪貼板數據格式分配一些全局內存,以便在拖放操作中存儲數據。在下拉代碼中,您可以查詢對象是否具有所需格式的數據,然後可以訪問該內存。MFC/OLE拖放 - 釋放全局分配的內存

但是作爲放置目標,您無法知道可能具有拖動源關聯數據的所有格式。那麼如何清除爲每種格式的拖動分配的所有內存?

其實,我是否假設要手動釋放這個數據,或讓MFC/Ole自動執行它?

回答

2

將句柄傳遞給COleDataSource後,它擁有內存,而不是你。您不需要釋放全局內存。

您應該使用BeginEnumFormats和GetNextFormat枚舉COleDataObject對象中的可用數據格式,直到找到您感興趣的數據格式。例如,如果您瞭解CF_HTML,則不需要處理CF_UNICODETEXT或CF_TEXT,除非用戶指示您放棄HTML格式化,只能進行純文本的放置/粘貼。