共用方式為


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

呼叫此函式來建立 CFileCFile 衍生的物件,並將指定格式的資料擷取至 CFile 指標。

CFile* GetFileData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

參數

cfFormat
要傳回資料的格式。 此參數可以是其中一個預先定義的剪貼簿格式,或原生 Windows RegisterClipboardFormat 函式所傳回的值。

lpFormatEtc
指向 FORMATETC 結構,描述要傳回資料的格式。 如果您想要指定 cfFormat 指定之剪貼簿格式以外的其他格式資訊,請提供此參數的值。 如果是 Null,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

如果成功,則為包含資料之新 CFileCFile 衍生物件的指標,否則為 Null。

備註

根據儲存資料的媒體,傳回值所指向的實際類型可能是 CFileCSharedFileCOleStreamFile

注意

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。

備註

呼叫 、 GetFileDataGetGlobalData 之前 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 類別