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

更新 : 2007 年 11 月

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

コピーまたは貼り付けを実装する前に、[編集] メニューの [コピー]、[切り取り]、および [貼り付け] の各コマンドを処理する関数を作成する必要があります。

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

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

  1. コピーするデータがネイティブ データであるか、埋め込みアイテムやリンク アイテムであるかを調べます。

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

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

  2. 選択されたアイテムの CopyToClipboard メンバ関数を呼び出します。

  3. [コピー] ではなく [切り取り] が選択されたときは、選択されたデータをアプリケーションから削除します。

この手順のコード例については、MFC OLE のサンプル プログラム OCLIENTHIERSVROnEditCut 関数と OnEditCopy 関数を参照してください。これらのサンプル プログラムでは、選択されているデータへのポインタが保持されているため、手順 1 に相当する部分は不要です。

データの貼り付け

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

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

  1. ビュー クラスに OnEditPaste 関数を実装します。この関数は、[編集] メニューの [貼り付け] が選択されると実行されます。

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

  3. COleDataObject::IsDataAvailable 関数を呼び出して、目的のデータ形式が利用可能かどうかを確認します。

    または、COleDataObject::BeginEnumFormats 関数で、アプリケーションに最も適したほかのデータ形式を検索します。

  4. 得られたデータ形式で貼り付けを実行します。

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

2ca18w7k.alert_note(ja-jp,VS.90).gifヒント :

貼り付け操作をそれぞれの関数に分割する利点は、ドラッグ アンド ドロップ操作でアプリケーションにデータがドロップされるときにも、貼り付けの同じコードを使用できることです。OCLIENT および HIERSVR の場合と同様に、OnDrop 関数で DoPasteItem 関数を呼び出して、[貼り付け] の操作を実装したコードを再利用することもできます。

[編集] メニューの [形式を選択して貼り付け] コマンドについては、「OLE のダイアログ ボックス」を参照してください。

さらに詳しくは次のトピックをクリックしてください

参照

参照

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