共用方式為


數據傳輸介面

IDataObject 介面提供數據取用者的方法,以取得和設定對象的數據、判斷物件支援的格式,以及在物件中的數據變更時註冊和接收通知。 取得數據時,呼叫端可以指定它想要轉譯數據的格式。 不過,數據源會決定儲存媒體,其會在呼叫端提供的 out 參數中傳回。

IDataObject 本身會提供您在應用程式中實作 Windows 剪貼簿傳輸或複合檔案傳輸所需的所有工具。 如果您也想要支援拖放傳輸,您必須實作 IDropSource 和 IDropTarget 介面以及 IDataObject

與 OLE 剪貼簿 API 結合的 IDataObject 介面提供 Windows 剪貼簿 API 的所有功能。 通常不需要同時使用這兩個剪貼簿 API。 支援拖放傳輸或 OLE 複合文件的數據供應商必須實 作 IDataObject 介面。 如果您的應用程式現在只支援剪貼簿傳輸,但您想要在稍後版本中新增拖放或複合檔,您可能想要立即實 作 IDataObject 和 OLE 剪貼簿 API,以將稍後重新編碼和偵錯所花費的時間降至最低。 您也可以實 作 IDataObject ,以利用全域記憶體以外的傳輸媒體。

下表摘要說明要使用哪些資料,視您想要支援的數據傳輸類型而定:

支援 使用
複合檔
IDataObject
拖放傳輸
IDataObjectIDropSourceIDropTargetDoDragDrop (或對等專案)
僅使用全域記憶體的剪貼簿傳輸
剪貼簿 API
使用全域記憶體以外的交換媒體進行剪貼簿傳輸。
IDataObject
剪貼簿現在傳輸,但稍後拖放或複合檔
IDataObject 和上面所列的介面和函式適用於「拖放傳輸」

當使用者起始數據傳輸作業時,來源應用程式會建立 IDataObject實例,並透過它提供一或多個格式的數據。 在剪貼簿傳輸中,應用程式會呼叫 OleSetClipboard 函式,將數據物件指標傳遞至 OLE。 (OleSetClipboard 也為 OLE 第 1 版和非 OLE 應用程式提供標準剪貼簿數據格式。在拖放傳輸中,應用程式會改為呼叫 DoDragDrop 函式。

在傳輸的接收端,目的地會接收 IDataObject 指標做為 IDropTarget::D rop 調用的自變數,或呼叫 OleSetClipboard 函式,視傳輸方式為拖放或剪貼簿。 取得此指標之後,目的地會呼叫 IDataObject::EnumFormatEtc ,以瞭解哪些格式可供擷取,以及可取得的媒體類型。 透過這項資訊,接收的應用程式會使用 IDataObject::GetData呼叫來要求數據。

資料傳輸