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