COleDataObject クラス

クリップボードや OLE 埋め込みアイテムからさまざまなフォーマットのデータを取得するときのデータ転送に使用します。クリップボードからデータを取得するときは、ドラッグ アンド ドロップを使用します。

構文

class COleDataObject

メンバー

パブリック コンストラクター

名前 説明
COleDataObject::COleDataObject COleDataObject オブジェクトを構築します。

パブリック メソッド

名前 説明
COleDataObject::Attach 指定した OLE データ オブジェクトを COleDataObject にアタッチします。
COleDataObject::AttachClipboard クリップボードにあるデータ オブジェクトをアタッチします。
COleDataObject::BeginEnumFormats 1 回以上の GetNextFormat 呼び出しに備えます。
COleDataObject::Detach 関連する 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

COleDataObject オブジェクトを OLE データ オブジェクトに関連付けるには、この関数を呼び出します。

void Attach(
    LPDATAOBJECT lpDataObject,
    BOOL bAutoRelease = TRUE);

パラメーター

lpDataObject
OLE データ オブジェクトを指します。

bAutoRelease
COleDataObject オブジェクトが破棄されたときに OLE データ オブジェクトを解放する必要がある場合は TRUE、そうでない場合は FALSE。

注釈

詳細については、Windows SDK の IDataObject に関する記事を参照してください。

COleDataObject::AttachClipboard

この関数を呼び出すと、現在クリップボードにあるデータ オブジェクトが COleDataObject オブジェクトにアタッチされます。

BOOL AttachClipboard();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

Note

この関数を呼び出すと、このデータ オブジェクトが解放されるまで、クリップボードはロックされます。 データ オブジェクトは、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 関数を呼び出す前に行う必要があります。

Note

ドラッグ アンド ドロップ ハンドラーのパラメーターの 1 つは COleDataObject へのポインターであるため、ドラッグ アンド ドロップをサポートするためにこのコンストラクターを呼び出す必要はありません。

COleDataObject::Detach

関連付けられた 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 以外を返します。それ以外の場合は 0 を返します。

解説

詳細については、Windows SDK の IDataObject::GetDataSTGMEDIUMFORMATETC に関する記事を参照してください。

詳細については、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。

注釈

データが格納されているメディアに応じて、戻り値が指す実際の型は CFileCSharedFileCOleStreamFile のいずれかになります。

Note

この関数の戻り値からアクセスされる CFile オブジェクトは、呼び出し元が所有します。 CFile オブジェクトの delete を行うこと、従ってファイルを閉じることは呼び出し元の責任です。

詳細については、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 以外、それ以外の場合は 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 以外、それ以外の場合は 0。

注釈

この関数は、GetDataGetFileData、または GetGlobalData を呼び出す前に使うと便利です。

詳細については、Windows SDK の IDataObject::QueryGetDataFORMATETC に関する記事を参照してください。

詳細については、Windows SDK の RegisterClipboardFormat に関する記事を参照してください。

CRichEditView::QueryAcceptData の例を参照してください。

COleDataObject::Release

COleDataObject オブジェクトと関連付けられていた IDataObject オブジェクトの所有権を解放するには、この関数を呼び出します。

void Release();

注釈

IDataObjectCOleDataObject は、Attach または AttachClipboard を明示的に呼び出すか、フレームワークによって関連付けられました。 AttachbAutoRelease パラメーターが FALSE の場合、IDataObject オブジェクトは解放されません。 この場合、IUnknown::Release を呼び出して IDataObject を解放するのは呼び出し元の責任です。

関連項目

MFC サンプル HIERSVR
MFC サンプル OCLIENT
階層図
COleDataSource クラス
COleClientItem クラス
COleServerItem クラス