2011-04-14 43 views
0

我需要檢測應用程序中的其他應用程序/窗口何時粘貼到我以前設置的數據上,因此我可以從源窗口中刪除它。我發現COleDataSource::DelaySetData理論上這樣做,COleDataSource::OnSetData會在粘貼發生時調用,但我無法確定。 MSDN(通常)對這個問題模糊不清,並沒有清楚地說出這種或那種方式。我將使用自定義格式,而watever格式是explorer用於剪切/粘貼文件。 所以問題是如何完全(而不是理論上)這樣做。 我真的需要從我的窗口中刪除項目當且僅當他們粘貼在其他地方。當在MFC中粘貼切割數據時檢測到數據源VS2008

回答

0

你這樣做是錯的。當你刪除某些應該立即刪除的內容時,如果需要恢復,應該提供撤銷功能。

剪貼板不是爲雙向信號設計的。 DelaySetData適用於以不同格式提交大量數據的應用程序,因此它們只需要提供接收器所需的格式;使用它來檢測漿糊發生時是否依賴於副作用。有剪貼板管理器可能會導致失敗。

+0

我很抱歉,但你錯了。非常錯誤.http://msdn.microsoft.com/en-us/library/aa969396.aspx#delete_on_paste。我的應用程序不支持撤消。此時添加此功能非常耗費成本。而且,正如你可以從上面的鏈接看到的,即使微軟也這樣做。如果你從資源管理器中「剪下」了某些東西,文件/目錄不會立即被刪除。只有在完成粘貼操作後纔會刪除它們。 – Pifcnt 2011-04-15 10:47:50