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 檔中的 OpenClipboardCloseClipboard

COleDataObject::BeginEnumFormats

呼叫此函式以準備後續呼叫, GetNextFormat 以便從專案擷取數據格式清單。

void BeginEnumFormats();

備註

呼叫 BeginEnumFormats之後,會儲存此數據物件所支援之第一個格式的位置。 的後續呼叫 GetNextFormat 會列舉數據物件中可用格式的清單。

若要檢查指定格式的數據可用性,請使用 COleDataObject::IsDataAvailable

如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::EnumFormatEtc

COleDataObject::COleDataObject

建構 COleDataObject 物件。

COleDataObject();

備註

呼叫 COleDataObject::AttachCOleDataObject::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::GetDataSTGMEDIUMFORMATETC

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

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