當我將我的win32程序中的數據複製到剪貼板時,我是否應該將其複製到剪貼板的內存釋放出來,然後將其粘貼到別處?或者系統對此負責。我應該釋放我複製到剪貼板的內存嗎?
回答
它通常由系統完成,然而,一些負責任的應用程序還負責要求用戶在離開前釋放剪貼板。
例如MSWord會要求用戶在退出之前將數據保存在內存中。 對於通用目的,您可以將其留給系統。
在這裏請記住,用戶可能想保留在剪貼板(即使在關閉應用程序後),所以你不應該對它進行破解並從內存中刪除它。
你的應用程序負責處理剪貼板上的數據,如果它放在那裏的話。這就是爲什麼許多應用程序(如Microsoft Office)在退出應用程序時詢問您是否要在剪貼板上保留大量數據的原因。
但是,我強烈建議用戶交互,因爲您不知道用戶是否需要稍後其他位置的剪貼板上的數據。
這取決於如何將數據放在那裏。如果通過'SetClibpoardData'和一個非'NULL'數據參數放在那裏,那麼操作系統負責數據,而不是應用程序。 「[如果SetClipboardData成功,則系統擁有由hMem參數標識的對象。一旦所有權已轉移到系統,應用程序可能不會寫入或釋放數據](http://msdn.microsoft.com/zh-cn/ /library/windows/desktop/ms649051(v=vs.85).aspx)。「 –
感謝雷蒙德,我不知道你的博客的粉絲BTW;) –
有兩種將數據放在剪貼板上的方法。
方法1:將數據直接到剪貼板,通過調用SetClipboardData
並通過一個非NULL
值作爲第二參數。在這種情況下,系統將對數據負責,而且您不應該自行釋放它。
方法2:將一個佔位符到剪貼板上,通過調用SetClipboardData
並傳遞NULL
作爲第二個參數。在這種情況下,應用程序負責數據,直到它調用SetClibpoardData
的第二個參數爲非NULL
,此時責任轉移到操作系統。
從您的問題中您不清楚您正在使用哪種方法。
如果SetClipboardData成功,該系統擁有由HMEM參數標識的對象。該應用程序可能無法寫入或釋放數據,一旦所有權已經轉移到系統
保持跟蹤剪貼板中的數據,使您可以從剪貼板關閉您的應用程序是完全可選時將其刪除。一旦數據在剪貼板上,系統就擁有它,並且它與應用程序分離,因此您可以選擇將其保留在剪貼板上,以便在應用程序關閉後保持可繼續使用狀態。除非您使用延遲渲染,否則在關閉應用程序時將其從剪貼板中刪除是有意義的,因爲當其他應用程序請求時,您的應用程序將不再運行以呈現數據。
- 1. 將DataGridView內容複製到剪貼板
- 2. 將內容複製到剪貼板
- 3. Javascript複製內容到剪貼板
- 4. 我應該釋放self.view嗎?
- 5. 我應該釋放NSImage嗎?
- 6. 複製並存儲到剪貼板
- 7. Prism.js複製到剪貼板
- 8. Javascript複製到剪貼板
- 9. 我應該釋放這個嗎? Objective-C中的內存管理
- 10. Perl複製到剪貼板不能使用剪貼板模塊
- 11. 我應該實施IDisposable以釋放「非託管」內存嗎?
- 12. 我應該在GlobalRealloc之後釋放全局內存嗎?
- 13. 我應該爲android位圖釋放內存嗎?
- 14. 的Javascript:複製到剪貼板的onkeydown
- 15. C#在我的視圖中將鏈接複製到剪貼板
- 16. 複製到基本html的剪貼板
- 17. Android的Firefox webextension複製到剪貼板
- 18. 複製到Node.js中的剪貼板?
- 19. 複製到沒有System.Windows.Forms.Clipboard的剪貼板?
- 20. 複製的DefaultTableModel數據到剪貼板
- 21. 複製Mathematica中的optput到剪貼板
- 22. 複製到vi中的剪貼板
- 23. ZeroClipboard - 複製到剪貼板的問題。
- 24. 複製的JTextPane文本到剪貼板
- 25. 使用javascript將內容複製/粘貼到剪貼板
- 26. 複製到剪貼板的圖像在粘貼時被剪裁
- 27. jQuery剪貼板複製
- 28. Javascript複製剪貼板
- 29. 如何將txt文件內的內容複製到剪貼板?
- 30. 我想單擊複製列表視圖項目到剪貼板
當系統完全沒有任何功能時(除非關閉或重新啓動時),」您可以將其留給系統「,應用程序負責它放在剪貼板上的數據,而不是系統 –
@John Willemse:是的,它是真實的,但即使你不應該對它做任何事情,因爲它由用戶擁有,用戶將決定他/她是否想保留它在內存中還是沒有 –
@John Willemse:除了微軟辦公室外,列出一個應用程序,負責清理剪貼板或要求用戶這樣做,你幾乎找不到幾個,這是有原因的 –