COM 定義應用程式間資料交換標準方案 —— 統一資料傳輸。核心在於資料物件,實作 IDataObject 介面,封裝要傳輸的資訊。剪貼簿與拖放是 UDT 兩大典型應用協定。
IDataObject 的 COM 物件。IDataObject 方法:GetData/GetDataHere/QueryGetData/GetCanonicalFormatEtc/SetData/EnumFormatEtc/DAdvise/DUnadvise/EnumDAdvise。IDataObject* 介面指標。IAdviseSink(較可連接物件簡化)。IDataObject::DAdvise 建立連接,需提供:接收器 IAdviseSink*、格式資訊 (FORMATETC)、通知旗標 (ADVF_*)。CreateDataAdviseHolder → IDataAdviseHolder),資料物件將通知相關方法委派給它。OpenClipboard/SetClipboardData/GetClipboardData... 僅支援預定義格式、全域記憶體。OleSetClipboard/OleGetClipboard/OleFlushClipboard/OleIsCurrentClipboard,傳遞 IDataObject*,支援任意資料物件(OLE 文件、ActiveX 控制項、自訂資料),非同步操作。IDataObject*),同步操作。RegisterDragDrop 註冊「放置目標」視窗。IDropSource,目標端實作 IDropTarget。| 類別 | 用途 | 繼承 |
|---|---|---|
COleDataSource | 資料來源端(提供資料),實作 IDataObject,管理內部格式緩衝區,有參考計數 | CCmdTarget |
COleDataObject | 客戶端(接收資料),包裝 IDataObject* | CCmdTarget |