拖放的默認實現是對大多數應用程序來說足夠了,然而,許多應用程序要求這些標准改變這些標准的行為。本文將介紹怎麼改變這些默認的步驟。另外,你可以使用這個技術來建立不支持符合文檔作為Drop源的應用程序。
如果你正在自定義OLE拖放行為或者你已經有了一個非OLE應用程序,你必須創建一個COleDataSource對象來包含數據。當用戶開始啟動一個拖放操作的時候,你的代碼應該在該對象調用DoDragDrop函數而不是在其他支持拖放操作的類中調用。
另外,你可以創建一個COleDropSource對象來控制Drop和重載它的許多函數,增加對你想改變的行為類型的依賴。這個Drop源對象被傳遞給COleDataSource::DoDragDrop來改變這些函數的默認行為。這些不同的選項讓你在你的程序中支持拖放操作有更多的彈性。關於數據源的詳細信息,見Data Objects and Data Sources(OLE)。
你可以重載下面的函數來自定義拖放操作:
OnBeginDrag 在你調用DoDragDrop之後如何初始化拖動 GiveFeedback 可視的返回,例如不同的拖動結果,光標不同 QueryContinueDrag 終止拖動操作。這個函數讓你可以檢測在拖動過程中的修飾鍵的狀態。