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::GetData、STGMEDIUM、FORMATETC に関する記事を参照してください。
詳細については、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。
注釈
データが格納されているメディアに応じて、戻り値が指す実際の型は CFile
、CSharedFile
、COleStreamFile
のいずれかになります。
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。
注釈
この関数は、GetData
、GetFileData
、または GetGlobalData
を呼び出す前に使うと便利です。
詳細については、Windows SDK の IDataObject::QueryGetData と FORMATETC に関する記事を参照してください。
詳細については、Windows SDK の RegisterClipboardFormat に関する記事を参照してください。
例
CRichEditView::QueryAcceptData の例を参照してください。
COleDataObject::Release
COleDataObject
オブジェクトと関連付けられていた IDataObject オブジェクトの所有権を解放するには、この関数を呼び出します。
void Release();
注釈
IDataObject
と COleDataObject
は、Attach
または AttachClipboard
を明示的に呼び出すか、フレームワークによって関連付けられました。 Attach
の bAutoRelease パラメーターが FALSE の場合、IDataObject
オブジェクトは解放されません。 この場合、IUnknown::Release を呼び出して IDataObject
を解放するのは呼び出し元の責任です。
関連項目
MFC サンプル HIERSVR
MFC サンプル OCLIENT
階層図
COleDataSource クラス
COleClientItem クラス
COleServerItem クラス