次の方法で共有


クリップボード: データのコピーと貼り付け

このトピックでは、OLE アプリケーションのクリップボードへのコピーとクリップボードからの貼り付けを実装するために必要な最小限の作業について説明します。 先に進む前に、 データ オブジェクトとデータ ソース (OLE) のトピックを読んでおくことをお勧めします。

コピーまたは貼り付けを実装するには、まず、[編集] メニューの [コピー]、[切り取り]、および [貼り付け] オプションを処理する関数を指定する必要があります。

データのコピーまたは切り取り

クリップボードにデータをコピーするには

  1. コピーするデータがネイティブ データか、埋め込みアイテムかリンクアイテムかを決定します。

    • データが埋め込まれているかリンクされている場合は、選択されている COleClientItem オブジェクトへのポインターを取得します。

    • データがネイティブで、アプリケーションがサーバーである場合は、選択したデータを含む COleServerItem から派生した新しいオブジェクトを作成します。 それ以外の場合は、データの COleDataSource オブジェクトを作成します。

  2. 選択した項目の CopyToClipboard メンバー関数を呼び出します。

  3. ユーザーがコピー操作ではなく切り取り操作を選択した場合は、選択したデータをアプリケーションから削除します。

このシーケンスの例については、MFC OLE サンプル プログラム OnEditCut および OnEditCopy関数と関数を参照してください。 これらのサンプルは、現在選択されているデータへのポインターを維持するため、手順 1 は既に完了しています。

データの貼り付け

データをアプリケーションに貼り付ける際に使用する形式を選択する必要があるため、データの貼り付けはコピーよりも複雑です。

クリップボードからデータを貼り付けるには

  1. ビュー クラスで、ユーザーが [編集] メニューから [貼り付け] オプションを選択する処理を行う OnEditPaste を実装します。

  2. OnEditPaste関数で、COleDataObject オブジェクトを作成し、そのAttachClipboardメンバー関数を呼び出して、このオブジェクトをクリップボード上のデータにリンクします。

  3. COleDataObject::IsDataAvailableを呼び出して、特定の形式が使用可能かどうかを確認します。

    または、 COleDataObject::BeginEnumFormats を使用して、アプリケーションに最も適した形式が見つかるまで他の形式を探すことができます。

  4. 形式の貼り付けを実行します。

このしくみの例については、MFC OLE サンプル プログラム OnEditPasteHIERSVR で定義されているビュー クラスのメンバー関数の実装を参照してください。

ヒント

貼り付け操作を独自の関数に分離する主な利点は、ドラッグ アンド ドロップ操作中にアプリケーションでデータを削除するときに、同じ貼り付けコードを使用できることです。 OCLIENT や HIERSVR と同様に、 OnDrop 関数は DoPasteItemを呼び出して、貼り付け操作を実装するために記述されたコードを再利用することもできます。

[編集] メニューの [特殊な貼り付け] オプションを処理するには、 OLE のダイアログ ボックスのトピックを参照してください。

詳しく知りたいこと

こちらも参照ください

クリップボード: OLE クリップボード メカニズムの使用