データ オブジェクトとデータ ソース : 操作
データ オブジェクトのデータ ソースの作成後に、挿入などのデータのいくつかの一般的な操作を実行することができ、フォームを列挙する削除のデータはデータなどです。この技術情報では、ほとんどの一般的な操作を完了するために必要な手法について説明します。ここでは、次の内容について説明します。
データ ソースにデータを挿入できます。
データ オブジェクトで使用できる形式が決まります
データ オブジェクトからのデータの取得
データ ソースにデータを挿入できます。
データがデータ ソースに挿入されるデータがすぐにまたはオンデマンド式で指定されているによって異なりますメディアを指定するかどうか。設定できる値は次のとおりです。
指定のデータすぐに (直前のレンダリング)
、データを指定しているすべてのクリップボード形式を 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 ルーチンにクライアント側インターフェイスです。
ユーザーが同じフォームのほかのデータのなどのドキュメントには、単にデータを挿入できます。