COleDataObject用于从一个嵌入OLE项,或从
剪贴板中通过拖放操作,以不同的数据格式存取数据时的数据传输。这类数据传输具有一个数据源和一个目的地。数据源是实现为一个
COleDataSource类。无论目的地应用中是否有存放在内的数据,或从
剪贴板中执行一次粘贴操作,都必须建立COleDataObject类的一个对象。
简介
该类使你能够判定数据是否以一种指定的格式存在。可以列举可用的数据格式或检查一个给定的格式是否可用,然后用首选的格式进行数据存取。对象的存取可以用几种途径,包括使用一个CFile或一个HGLOBAL或STGMEDIUM结构。
COleDataObject类的成员
构造函数
操作
COleDataObject::Attach
void Attach( LPDATAOBJECT lpDataObject, BOOL bAutoRelease = TRUE );
参数:
说明:
调用该函数将一个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( );
说明:
调
COleDataObject::GetData
BOOL GetData( CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium, LP
FORMATETC lpFormatEtc = NULL );
返回值:如果成功,则返回非零值;否则为0。
参数:
说明:
调用该函数以指定格式存取数据。
COleDataObject::GetFileData
CFile* GetFileData( CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL );
返回值:
如果成功,则返回一个新的包含数据的CFile或CFile派生类的对象的
指针;否则返回NULL。
参数:
说明:
调用该函数创建一个CFile或CFile派生的对象,以指定格式将数据存取到一个CFile
指针中。视数据存储的介质不同,则返回值指向的实际类型可能是CFile,
CSharedFile或COleStreamFile。
注意:
该函数返回值存取的CFile对象属于调用者。应由调用者来删除CFile
数据对象以关闭文件。
要了解更多的信息,请参阅“OLE 2程序员参考(卷1)”中的FORMATETC。要了解更多的信息,请参阅Win32文档中的RegisterClipboardFormat。
COleDataObject::GetGlobalData
HGLOBAL GetGlobalData( CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL );
返回值:
如果成功,则返回包含数据的全局内存块的句柄;否则返回NULL。
参数:
说明:
调用该函数分配全局内存块,以指定格式将数据存取到一个HGLOBAL中。
要了解更多的信息,请参阅“OLE 2程序员参考(卷1)”中的FORMATETC。
要了解更多的信息,请参阅Win32文档中的RegisterClipboardFormat。
COleDataObject::GetNextFormat
BOOL GetNextFormat( LPFORMATETC lpFormatEtc );
返回值:
如果有另外格式可用,则返回非零值;否则为0。
参数:
说明:
重复调用该函数获取所有从项存取数据的可用格式。
调用BeginEnumFormats后,该数据对象支持的第一种格式的位置被存储起来,连续地调用GetNextFormat将列举数据对象的可用格式的序列。
使用这些函数可罗列可用格式。要检查数据在给定格式下的可用性,请使用COleDataObject::IsDataAvailable。
要了解更多的信息,请参阅“OLE 2程序员参考(卷1)”中的IEnumXXXX::Next。
COleDataObject::IsDataAvailable
BOOL IsDataAvailable( CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL );
返回值:
若数据在指定格式下可用,则返回非零值;否则为0。
参数:
说明:
调用该函数判定特定格式是否可用于从OLE 项中存取数据。在调用GetData,GetFileData或GetGlobalData之前调用该函数是十分有用的。
COleDataObject::Release
void Release( );
说明:
调用该函数释放一个先前和COleDataObject关联的IDataObject对象的所有权。可以显式地调用Attach或AttachClipboard 或由
框架将一个IDataObject对象和COleDataObject 关联。如果Attach 的 bAutoRelease参数为 FALSE, IDataObject对象将不释放。在这种情形下,调用者有责任使用IUnknown::Release释放IDataObject。