COleDataObject 類別
用於資料傳輸以透過剪貼簿、拖放作業或內嵌 OLE 項目擷取各種格式的資料。
語法
class COleDataObject
成員
公用建構函式
名稱 | 描述 |
---|---|
COleDataObject::COleDataObject | 建構 COleDataObject 物件。 |
公用方法
名稱 | 描述 |
---|---|
COleDataObject::Attach | 將指定的 OLE 資料物件附加至 COleDataObject 。 |
COleDataObject::AttachClipboard | 附加剪貼簿上的數據物件。 |
COleDataObject::BeginEnumFormats | 準備一或多個後續 GetNextFormat 呼叫。 |
COleDataObject::D etach | 中斷連結相關聯的 IDataObject 物件。 |
COleDataObject::GetData | 以指定的格式,從附加的 OLE 資料物件複製數據。 |
COleDataObject::GetFileData | 將數據從附加的 OLE 資料物件複製到 CFile 指定格式的指標。 |
COleDataObject::GetGlobalData | 以指定的格式,將資料從附加的 OLE 資料物件複製到 HGLOBAL 。 |
COleDataObject::GetNextFormat | 傳回可用的下一個數據格式。 |
COleDataObject::IsDataAvailable | 檢查數據是否以指定的格式提供。 |
COleDataObject::Release | 卸離並釋放相關聯的 IDataObject 物件。 |
備註
COleDataObject
沒有基類。
這類數據傳輸包括來源和目的地。 數據源會實作為 COleDataSource 類別的物件。 每當目的地應用程式將數據卸除,或要求從剪貼簿執行貼上作業時,都必須建立 類別的物件 COleDataObject
。
這個類別可讓您判斷數據是否存在於指定的格式。 您也可以列舉可用的數據格式,或檢查指定的格式是否可用,然後擷取慣用格式的數據。 物件擷取可以透過數種不同的方式來完成,包括使用 CFile、HGLOBAL 或 STGMEDIUM
結構。
如需詳細資訊,請參閱 Windows SDK 中的 STGMEDIUM 結構。
如需在應用程式中使用資料對象的詳細資訊,請參閱資料對象和數據源(OLE)一文。
繼承階層架構
COleDataObject
需求
標頭: afxole.h
COleDataObject::Attach
呼叫此函式,將物件與 OLE 資料對象產生關聯 COleDataObject
。
void Attach(
LPDATAOBJECT lpDataObject,
BOOL bAutoRelease = TRUE);
參數
lpDataObject
指向 OLE 資料物件。
bAutoRelease
如果對象終結時 COleDataObject
應該釋放 OLE 資料物件,則為 TRUE,否則為 FALSE。
備註
如需詳細資訊,請參閱 Windows SDK 中的 IDataObject 。
COleDataObject::AttachClipboard
呼叫此函式,將目前在剪貼簿上的數據物件附加至 COleDataObject
物件。
BOOL AttachClipboard();
傳回值
如果成功則為非零;否則為 0。
備註
注意
呼叫此函式會鎖定剪貼簿,直到釋放此數據物件為止。 數據物件會在的 COleDataObject
解構函式中釋放。 如需詳細資訊,請參閱 Win32 檔中的 OpenClipboard 和 CloseClipboard 。
COleDataObject::BeginEnumFormats
呼叫此函式以準備後續呼叫, GetNextFormat
以便從專案擷取數據格式清單。
void BeginEnumFormats();
備註
呼叫 BeginEnumFormats
之後,會儲存此數據物件所支援之第一個格式的位置。 的後續呼叫 GetNextFormat
會列舉數據物件中可用格式的清單。
若要檢查指定格式的數據可用性,請使用 COleDataObject::IsDataAvailable。
如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::EnumFormatEtc 。
COleDataObject::COleDataObject
建構 COleDataObject
物件。
COleDataObject();
備註
呼叫 COleDataObject::Attach 或 COleDataObject::AttachClipboard 之前,必須先進行呼叫。COleDataObject
注意
由於拖放處理程式的其中一個參數是 的指標 COleDataObject
,因此不需要呼叫這個建構函式來支援拖放。
COleDataObject::D etach
呼叫此函式,以將物件與其相關聯的 OLE 資料對象中斷連結 COleDataObject
,而不釋放數據物件。
LPDATAOBJECT Detach();
傳回值
已中斷連結之 OLE 資料物件的指標。
備註
COleDataObject::GetData
呼叫此函式,以指定格式從專案擷取數據。
BOOL GetData(
CLIPFORMAT cfFormat,
LPSTGMEDIUM lpStgMedium,
LPFORMATETC lpFormatEtc = NULL);
參數
cfFormat
要傳回數據的格式。 此參數可以是其中一個預先定義的剪貼簿格式,或原生 Windows RegisterClipboardFormat 函式所傳回的值。
lpStgMedium
指向將接收數據的 STGMEDIUM 結構。
lpFormatEtc
指向 FORMATETC 結構,描述要傳回數據的格式。 如果您想要指定 cfFormat 所指定之剪貼簿格式以外的其他格式資訊,請提供此參數的值。 如果是 NULL,則會針對 結構中的其他 FORMATETC
欄位使用預設值。
傳回值
如果成功則為非零;否則為 0。
備註
如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::GetData、 STGMEDIUM 和 FORMATETC 。
如需詳細資訊,請參閱 Windows SDK 中的 RegisterClipboardFormat 。
COleDataObject::GetFileData
呼叫此函式來建立 CFile
或 CFile
衍生的物件,並將指定格式的數據擷取至 CFile
指標。
CFile* GetFileData(
CLIPFORMAT cfFormat,
LPFORMATETC lpFormatEtc = NULL);
參數
cfFormat
要傳回數據的格式。 此參數可以是其中一個預先定義的剪貼簿格式,或原生 Windows RegisterClipboardFormat 函式所傳回的值。
lpFormatEtc
指向 FORMATETC 結構,描述要傳回數據的格式。 如果您想要指定 cfFormat 所指定之剪貼簿格式以外的其他格式資訊,請提供此參數的值。 如果是 NULL,則會針對 結構中的其他 FORMATETC
欄位使用預設值。
傳回值
如果成功,則為包含數據之新 CFile
或 CFile
衍生物件的指標,否則為 NULL。
備註
依儲存資料的媒體,傳回值所指向的實際類型可能是 CFile
、 CSharedFile
或 COleStreamFile
。
注意
CFile
這個函式的傳回值所存取的物件是由呼叫端所擁有。 這是物件呼叫端delete
CFile
的責任,因此會關閉檔案。
如需詳細資訊,請參閱 Windows SDK 中的 FORMATETC 。
如需詳細資訊,請參閱 Windows SDK 中的 RegisterClipboardFormat 。
COleDataObject::GetGlobalData
呼叫此函式以配置全域記憶體區塊,並將指定格式的數據擷取到 HGLOBAL。
HGLOBAL GetGlobalData(
CLIPFORMAT cfFormat,
LPFORMATETC lpFormatEtc = NULL);
參數
cfFormat
要傳回數據的格式。 此參數可以是其中一個預先定義的剪貼簿格式,或原生 Windows RegisterClipboardFormat 函式所傳回的值。
lpFormatEtc
指向 FORMATETC 結構,描述要傳回數據的格式。 如果您想要指定 cfFormat 所指定之剪貼簿格式以外的其他格式資訊,請提供此參數的值。 如果是 NULL,則會針對 結構中的其他 FORMATETC
欄位使用預設值。
傳回值
如果成功,包含數據的全域記憶體區塊句柄;否則為 NULL。
備註
如需詳細資訊,請參閱 Windows SDK 中的 FORMATETC 。
如需詳細資訊,請參閱 Windows SDK 中的 RegisterClipboardFormat 。
COleDataObject::GetNextFormat
重複呼叫此函式,以取得可從專案擷取數據的所有格式。
BOOL GetNextFormat(LPFORMATETC lpFormatEtc);
參數
lpFormatEtc
指向 在函數調用傳回時接收格式資訊的 FORMATETC 結構。
傳回值
如果有其他格式可用,則為非零;否則為 0。
備註
呼叫 COleDataObject::BeginEnumFormats 之後,會儲存此數據物件所支援之第一個格式的位置。 的後續呼叫 GetNextFormat
會列舉數據物件中可用格式的清單。 使用這些函式來列出可用的格式。
若要檢查指定格式的可用性,請呼叫 COleDataObject::IsDataAvailable。
如需詳細資訊,請參閱 Windows SDK 中的 IEnumXXXX::Next 。
COleDataObject::IsDataAvailable
呼叫此函式,以判斷特定格式是否可用於從 OLE 專案擷取數據。
BOOL IsDataAvailable(
CLIPFORMAT cfFormat,
LPFORMATETC lpFormatEtc = NULL);
參數
cfFormat
要用於 lpFormatEtc 所指向之結構中的剪貼簿數據格式。 此參數可以是其中一個預先定義的剪貼簿格式,或原生 Windows RegisterClipboardFormat 函式所傳回的值。
lpFormatEtc
指向 描述所需格式的 FORMATETC 結構。 只有在您想要指定 cfFormat 所指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果是 NULL,則會針對 結構中的其他 FORMATETC
欄位使用預設值。
傳回值
如果數據是以指定的格式提供,則為非零;否則為 0。
備註
呼叫、 GetFileData
或 GetGlobalData
之前GetData
,此函式很有用。
如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::QueryGetData 和 FORMATETC 。
如需詳細資訊,請參閱 Windows SDK 中的 RegisterClipboardFormat 。
範例
請參閱 CRichEditView::QueryAcceptData 的範例。
COleDataObject::Release
呼叫此函式,以釋放先前與COleDataObject
對象相關聯之 IDataObject 對象的擁有權。
void Release();
備註
IDataObject
藉由呼叫Attach
或明確或AttachClipboard
由架構建立關聯COleDataObject
。 如果 的 Attach
bAutoRelease 參數為 FALSE,IDataObject
將不會釋放物件。 在此情況下,呼叫端負責藉由呼叫 IUnknown::Release 來釋放 IDataObject
。
另請參閱
MFC 範例 HIERSVR
MFC 範例 OCLIENT
階層架構圖表
COleDataSource 類別
COleClientItem 類別
COleServerItem 類別