クリップボード: その他の形式の追加
このトピックでは、サポートされる形式、特に OLE サポートを拡充する方法について説明します。 「クリップボード : データのコピーと貼り付け」のトピックでは、クリップボードへのコピーとクリップボードからの貼り付けに必要な最小限の実装について説明しています。 それしか実装しなかった場合、クリップボードに格納される形式は CF_METAFILEPICT、CF_EMBEDSOURCE、CF_OBJECTDESCRIPTOR のみです (場合によっては CF_LINKSOURCE も含む)。 この 3 つ以外の形式もクリップボードに格納する必要のあるアプリケーションがほとんどでしょう。
カスタム形式の登録
独自のカスタム形式を作成するには、カスタム クリップボード形式を登録するときと同じ手順に従います。つまり、形式の名前を RegisterClipboardFormat 関数に渡し、その戻り値を形式 ID として使用します。
クリップボードに形式を追加する
クリップボードに設定されている形式に、さらに形式を追加するには、(コピーの対象となるデータがネイティブであるかどうかに応じて) COleClientItem
または COleServerItem
から派生したクラスの OnGetClipboardData
関数をオーバーライドする必要があります。 この関数で、次の手順に従ってください。
クリップボードに形式を追加するには
COleDataSource
オブジェクトを作成します。COleDataSource::CacheGlobalData
を呼び出して、サポートされる一連の形式に独自のネイティブ データ形式を追加する関数に対し、このデータ ソースを渡します。サポートしたい標準形式ごとに
COleDataSource::CacheGlobalData
を呼び出して標準の形式を追加します。
この手法は、MFC OLE サンプル プログラム HIERSVR で使用されています (CServerItem クラスの OnGetClipboardData
メンバー関数を参照)。 このサンプルが唯一異なるのは、手順 3 が実装されていないことです。HIERSVR は他の標準形式をサポートしないためです。