クリップボード : データのコピーと貼り付け
このトピックでは、OLE アプリケーションでクリップボードへのコピーとクリップボードからの貼り付けを実装するために必要な最小限の作業について説明します。 次に進む前に、データ オブジェクトとデータ ソース (OLE) に関するトピックを読んでお勧めします。
コピーまたは貼り付けを実装するには、[編集] メニューの [コピー]、[切り取り]、および [貼り付け] オプションを処理する関数を指定する必要があります。
データのコピーまたは切り取り
クリップボードにデータをコピーするには
コピーするデータがネイティブ データか、埋め込み項目またはリンク項目かを判断します。
データが埋め込まれているかリンクされている場合、選択されている
COleClientItem
オブジェクトへのポインターを取得します。データがネイティブで、アプリケーションがサーバーである場合、選択したデータを含む
COleServerItem
から派生した新しいオブジェクトを作成します。 それ以外の場合は、データのCOleDataSource
オブジェクトを作成します。
選択した項目の
CopyToClipboard
メンバー関数を呼び出します。ユーザーがコピー操作ではなく、切り取り操作を選択した場合は、選択したデータをアプリケーションから削除します。
このシーケンスの例については、MFC OLE サンプル プログラム OCLIENT および HIERSVR の OnEditCut
関数と OnEditCopy
関数を参照してください。 これらのサンプルでは、現在選択されているデータへのポインターが保持されるため、手順 1 は既に完了しています。
データの貼り付け
データの貼り付けは、データをアプリケーションに貼り付けるために使用する形式を選択する必要があるため、コピーの場合よりも複雑です。
クリップボードからデータを貼り付けるには
ビュー クラスで
OnEditPaste
を実装して、[編集] メニューから [貼り付け] オプションを選択してユーザーを処理します。OnEditPaste
関数でCOleDataObject
オブジェクトを作成し、そのAttachClipboard
メンバー関数を呼び出して、クリップボード上のデータにこのオブジェクトをリンクします。COleDataObject::IsDataAvailable
を呼び出して、特定の形式が使用可能かどうかを確認します。または、
COleDataObject::BeginEnumFormats
を使用して、アプリケーションに最も適した形式が見つからるまで、他の形式を検索できます。形式の貼り付けを実行します。
この作業の例については、MFC OLE サンプル プログラム OCLIENT および HIERSVR に定義されているビュー クラスの OnEditPaste
メンバー関数の実装を参照してください。
ヒント
貼り付け操作を独自の関数に分離する主な利点は、ドラッグ アンド ドロップ操作中にアプリケーションでデータがドロップされた場合に同じ貼り付けコードを使用できるという点です。 OCLIENT および HIERSVR と同様に、OnDrop
関数は DoPasteItem
を呼び出し、貼り付け操作を実装するために記述されたコードを再利用できます。
[編集] メニューの [特殊な貼り付け] オプションを処理するには、「OLE のダイアログ ボックス」を参照してください。