COleDataObject 類別

注意

Microsoft 基礎類別(MFC)函式庫持續被支援。 不過,我們不再新增功能或更新文件。

用於資料傳輸以透過剪貼簿、拖放作業或內嵌 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這個函式的傳回值所存取的物件是由呼叫端所擁有。 這是物件呼叫端deleteCFile的責任,因此會關閉檔案。

如需詳細資訊,請參閱 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。

備註

呼叫、 GetData或 GetFileData之前GetGlobalData,此函式很有用。

如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::QueryGetData 和 FORMATETC 。

如需詳細資訊,請參閱 Windows SDK 中的 RegisterClipboardFormat 。

範例

請參閱 CRichEditView::QueryAcceptData 的範例。

COleDataObject::Release

呼叫此函式,以釋放先前與對象相關聯之 IDataObjectCOleDataObject。

void Release();

備註

IDataObject藉由呼叫COleDataObject或明確或Attach由架構建立關聯AttachClipboard。 如果 的 Attach 參數為 FALSE,IDataObject將不會釋放物件。 在此情況下,呼叫端負責藉由呼叫 IDataObject 來釋放 。

另請參閱

MFC 範例 HIERSVR
MFC 範例 OCLIENT
階層架構圖表
COleDataSource 類別
COleClientItem 類別
COleServerItem 類別