データ オブジェクトとデータ ソース : 操作
データ オブジェクトまたはデータ ソースの後で作成された場合、挿入などのデータの一般的な操作を実行することができ、形式を列挙する削除、データなどです。 ここでは、最も一般的な操作を完了するために必要な手法について説明します。 ここでは、次の内容について説明します。
データ ソースにデータを挿入できます。
データ オブジェクトで使用できる形式を決定します。
データ オブジェクトからのデータの取得
データ ソースにデータを挿入できます。
データがデータ ソースに挿入したりデータをすばやくまたはオンデマンドで指定されているかによって、およびメディアをで指定されているかどうかを指定します。 これは次のとおりです。
フィード データ、(現在の描画)
データを提供するすべてのクリップボード形式を COleDataSource::CacheGlobalData に繰り返し呼び出し。 メモリに格納すると、ハンドルを使用するクリップボード データ形式、およびオプションで、データを表す FORMATETC 構造体を渡します。
または
STGMEDIUM 構造体を直接使用する場合は、上記のオプションの COleDataSource::CacheGlobalData の代わりに COleDataSource::CacheData を呼び出します。
フィード データに応じて (遅延レンダリング)
これは高度なトピックです。
データを提供するすべてのクリップボード形式を COleDataSource::DelayRenderData に繰り返し呼び出し。 使用するクリップボード形式、およびオプションで、データを表す FORMATETC 構造体を渡します。 データが要求されると、フレームワークは、オーバーライドする必要 COleDataSource::OnRenderDataを呼び出します。
または
データを提供するために CFile オブジェクトを使用して前のオプションの COleDataSource::DelayRenderData の代わりに COleDataSource::DelayRenderFileData を呼び出します。 データが要求されると、フレームワークは、オーバーライドする必要 COleDataSource::OnRenderFileDataを呼び出します。
データ オブジェクトで使用できる形式を決定します。
アプリケーションは、ユーザーにデータを貼り付けることを有効にする前に処理できるにクリップボード形式が存在するかどうかを確認する必要があります。 これを行うには、アプリケーションは次のようにする必要があります:
COleDataObject オブジェクトと FORMATETC 構造を作成します。
クリップボードのデータとデータ オブジェクトを関連付けるには、データ オブジェクトの AttachClipboard メンバー関数を呼び出します。
以下のいずれかを実行します。
必要な形式が一つしかないデータ オブジェクトの IsDataAvailable メンバー関数を呼び出します。 これは時間クリップボードのデータがアプリケーションよりも多くの形式をサポートする格納します。
または
クリップボードに使用できる形式を列挙できるようにデータ オブジェクトの BeginEnumFormats メンバー関数を呼び出します。 クリップボードは、アプリケーションがサポートする形式を返すか、これ以上の形式がなくなるまで GetNextFormat を呼び出します。
ON_UPDATE_COMMAND_UIを使用する場合、貼り付けを、編集メニューの特殊な項目を貼り付けることもできるようになります。 これを行うには、CMenu::EnableMenuItem または CCmdUI::Enableを呼び出します。 コンテナー アプリケーションがメニュー項目にする必要がある場合に機能の詳細については、メニューとリソース: コンテナーの追加を参照し。
データ オブジェクトからのデータの取得
データ形式を決定したら、後は、データ オブジェクトからデータを取得することです。 そのため、ユーザーはデータを配置する場所をとするアプリケーションは、関数を呼び出します。 データは次のメディアの 1 つがで使用する:
Medium |
呼び出される関数 |
---|---|
グローバル メモリ (HGLOBAL) |
COleDataObject::GetGlobalData |
ファイル (CFile) |
COleDataObject::GetFileData |
STGMEDIUM 構造 体 (IStorage) |
COleDataObject::GetData |
一般に、メディアはクリップボード形式とともに指定します。 たとえば、CF_EMBEDDEDSTRUCT オブジェクトは STGMEDIUM 構造体を必要とする IStorage のメディアに必要です。 したがって STGMEDIUM 構造体を受け入れることができる、これらの関数の 1 であるため、GetData を使用します。
クリップボード形式が IStream または HGLOBAL の中にある場合は、フレームワークはデータを参照する CFile にポインターを提供できます。 アプリケーションは、ファイルからデータをインポートすることがありますと同様にデータを取得するために、読み取られるファイルを使用できます。 基本的に、データ ソースの OnRenderData と OnRenderFileData ルーチンにクライアント側インターフェイスです。
ユーザーは同じ形式で他のデータのなどのドキュメントには、データを単に挿入できます。