複製鏈接
請複製以下鏈接發送給好友

COleDataObject

鎖定
COleDataObject用於從一個嵌入OLE項,或從剪貼板中通過拖放操作,以不同的數據格式存取數據時的數據傳輸。這類數據傳輸具有一個數據源和一個目的地。數據源是實現為一個COleDataSource類。無論目的地應用中是否有存放在內的數據,或從剪貼板中執行一次粘貼操作,都必須建立COleDataObject類的一個對象。
中文名
COleDataObject
用    該
函數將C
OleDataObj
從它關聯的
對象據對象。
數據對象中分離出來,

目錄

COleDataObject簡介

COleDataObject沒有基類
該類使你能夠判定數據是否以一種指定的格式存在。可以列舉可用的數據格式或檢查一個給定的格式是否可用,然後用首選的格式進行數據存取。對象的存取可以用幾種途徑,包括使用一個CFile或一個HGLOBAL或STGMEDIUM結構。
#include <afxole.h>
COleDataObject類的成員

COleDataObject構造函數

COleDataObject構造一個COleDataObject對象
操作
AttachClipboard粘附在剪貼板中的數據對象IsDataAvailable檢查數據在指定格式下是否可用GetData用指定的格式從一個附加的OLE數據對象中拷貝數據GetFileData用指定格式從一個附加的OLE數據對象中拷貝數據到一個CFile指針GetGlobalData用指定格式從一個附加的OLE數據對象中拷貝數據到一個HGLOBALBeginEnumFormats為後面一次或多次的GetNextFormat調用作準備GetNextFormat返回下一個可用的格式Attach將指定OLE數據對象附加到COleDataObjectRelease分離並釋放關聯的IDataObject對象Detach分離關聯的IDataObject對象
COleDataObject::Attach
void Attach( LPDATAOBJECT lpDataObject, BOOL bAutoRelease = TRUE );
參數:
lpDataObject
一個OLE數據對象的指針。
bAutoRelease
如果銷燬COleDataObject對象時需釋放OLE數據對象,其值為TRUE;否則為FALSE。
説明:
調用該函數將一個OLE數據對象和COleDataObject對象關聯。
要了解更多的信息,請參閲“OLE 2程序員參考(卷1)”中的 IDataObject結構。
COleDataObject::AttachClipboard
BOOL AttachClipboard( );
返回值:如果成功,則返回非零值;否則為0。
説明:
調用該函數粘貼一個當前在剪貼板中的數據對象到COleDataObject對象。
注意:
調用該函數將封鎖剪貼板直至該數據對象被釋放。數據對象在COleDataObject的析構函數中釋放。
COleDataObject::BeginEnumFormats
void BeginEnumFormats( );
説明:
調用該函數為後面調用GetNextFormat從項存取一系列數據格式作準備。
調用BeginEnumFormats後,該數據對象支持的第一種格式的位置被存儲起來,連續地調用GetNextFormat將列舉數據對象的可用格式的序列。要檢查數據在給定格式下的可用性,請使用COleDataObject::IsDataAvailable。
COleDataObject::COleDataObject
COleDataObject( );
説明:
構造一個COleDataObject對象。在調用COleDataObject函數之前,必須先調用COleDataObject::Attach或COleDataObject::AttachClipboard。
注意:
既然拖放操作的其中一個參數是一個COleDataObject的一個指針,無需調用該構造函數來支持拖放操作。
COleDataObject::Detach
LPDATAOBJECT Detach( );
返回值:分離的OLE數據對象指針
説明:
調
COleDataObject::GetData
BOOL GetData( CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium, LPFORMATETC lpFormatEtc = NULL );
返回值:如果成功,則返回非零值;否則為0。
參數:
cfFormat
數據的返回格式。該參數可以是預定義剪貼板格式的一種或WindowsRegisterClipboardFormat函數的返回值。
lpStgMedium
接收數據的一個 STGMEDIUM結構。
lpFormatEtc
一個FORMATETC結構的指針,該結構説明數據的返回格式。如果你要在用cfFormat指定的剪貼板格式外指定另外的格式,給該參數提供一個值。如果該值為NULL, 將使用FORMATETC結構的缺省值。
説明:
調用該函數以指定格式存取數據。
COleDataObject::GetFileData
CFile* GetFileData( CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL );
返回值:
如果成功,則返回一個新的包含數據的CFile或CFile派生類的對象的指針;否則返回NULL。
參數:
cfFormat
數據的返回格式。該參數可以是預定義剪貼板格式的一種或WindowsRegisterClipboardFormat函數的返回值。
lpFormatEtc
一個FORMATETC 結構的指針,該結構説明數據的返回格式。如果你要在用cfFormat指定的剪貼板格式外指定另外的格式,給該參數提供一個值。如果該值為NULL,將使用FORMATETC結構的缺省值。
説明:
調用該函數創建一個CFile或CFile派生的對象,以指定格式將數據存取到一個CFile指針中。視數據存儲的介質不同,則返回值指向的實際類型可能是CFile,CSharedFile或COleStreamFile。
注意:
該函數返回值存取的CFile對象屬於調用者。應由調用者來刪除CFile數據對象以關閉文件。
要了解更多的信息,請參閲“OLE 2程序員參考(卷1)”中的FORMATETC。要了解更多的信息,請參閲Win32文檔中的RegisterClipboardFormat。
COleDataObject::GetGlobalData
HGLOBAL GetGlobalData( CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL );
返回值:
如果成功,則返回包含數據的全局內存塊的句柄;否則返回NULL。
參數:
cfFormat
數據的返回格式。該參數可以是預定義剪貼板格式的一種或Windows RegisterClipboardFormat函數的返回值。
lpFormatEtc
一個FORMATETC結構的指針,該結構説明數據的返回格式。如果你要在用cfFormat指定的剪貼板格式外指定另外的格式,給該參數提供一個值。如果該值為NULL, 將使用FORMATETC結構的缺省值。
説明:
調用該函數分配全局內存塊,以指定格式將數據存取到一個HGLOBAL中。
要了解更多的信息,請參閲“OLE 2程序員參考(卷1)”中的FORMATETC。
要了解更多的信息,請參閲Win32文檔中的RegisterClipboardFormat。
COleDataObject::GetNextFormat
BOOL GetNextFormat( LPFORMATETC lpFormatEtc );
返回值:
如果有另外格式可用,則返回非零值;否則為0。
參數:
lpFormatEtc
一個FORMATETC結構指針,用於函數返回時存取格式信息。
説明:
重複調用該函數獲取所有從項存取數據的可用格式。
調用BeginEnumFormats後,該數據對象支持的第一種格式的位置被存儲起來,連續地調用GetNextFormat將列舉數據對象的可用格式的序列。
使用這些函數可羅列可用格式。要檢查數據在給定格式下的可用性,請使用COleDataObject::IsDataAvailable。
要了解更多的信息,請參閲“OLE 2程序員參考(卷1)”中的IEnumXXXX::Next。
COleDataObject::IsDataAvailable
BOOL IsDataAvailable( CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL );
返回值:
若數據在指定格式下可用,則返回非零值;否則為0。
參數:
cfFormat
數據的返回格式。該參數可以是預定義剪貼板格式的一種或Windows RegisterClipboardFormat函數的返回值。
lpFormatEtc
一個FORMATETC結構的指針,該結構説明數據的返回格式。如果你要在用cfFormat指定的剪貼板格式外指定另外的格式,給該參數提供一個值。如果該值為NULL,將使用FORMATETC結構的缺省值。
説明:
調用該函數判定特定格式是否可用於從OLE 項中存取數據。在調用GetData,GetFileData或GetGlobalData之前調用該函數是十分有用的。
COleDataObject::Release
void Release( );
説明:
調用該函數釋放一個先前和COleDataObject關聯的IDataObject對象的所有權。可以顯式地調用Attach或AttachClipboard 或由框架將一個IDataObject對象和COleDataObject 關聯。如果Attach 的 bAutoRelease參數為 FALSE, IDataObject對象將不釋放。在這種情形下,調用者有責任使用IUnknown::Release釋放IDataObject。