次の方法で共有


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

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

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

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

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

  1. コピーするデータがネイティブ データか、埋め込み項目またはリンク項目かを判断します。

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

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

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

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

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

データの貼り付け

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

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

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

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

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

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

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

この作業の例については、MFC OLE サンプル プログラム OCLIENT および HIERSVR に定義されているビュー クラスの OnEditPaste メンバー関数の実装を参照してください。

ヒント

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

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

さらに詳しい情報

関連項目

クリップボード: OLE クリップボード機構の使用方法