クリップボードについて

クリップボード は、アプリケーションがデータを転送できるようにする一連の関数とメッセージです。 すべてのアプリケーションがクリップボードにアクセスできるため、アプリケーション間またはアプリケーション内でデータを簡単に転送できます。

クリップボードはユーザー主導です。 ウィンドウは、ユーザーからのコマンドへの応答としてのみ、クリップボードとの間でデータを転送する必要があります。 ユーザーの知識がなくても、ウィンドウでクリップボードを使用してデータを転送することはできません。

クリップボードのメモリ オブジェクトは、クリップボード形式と呼ばれる任意のデータ形式にすることができます。 各形式は符号なし整数値で識別されます。 標準 (定義済み) クリップボード形式の場合、この値は Winuser.h で定義された定数です。登録済みのクリップボード形式の場合は、 RegisterClipboardFormat 関数の戻り値です。

クリップボード形式の登録を除き、個々のウィンドウはほとんどのクリップボード操作を実行します。 通常、ウィンドウ プロシージャは、 WM_COMMAND メッセージに応答してクリップボードとの間で情報を転送します。

このセクションでは、以下について説明します。

クリップボード コマンド

ユーザーは通常、アプリケーション の [編集] メニューからコマンドを選択してクリップボード操作を実行します。 標準のクリップボード コマンドの簡単な説明を次に示します。

コマンド 説明
切り取り 現在の選択範囲のコピーをクリップボードに配置し、選択範囲を文書から削除します。 クリップボードの前の内容が破棄されます。
コピー 現在の選択範囲のコピーをクリップボードに配置します。 ドキュメントは変更されません。 クリップボードの前の内容が破棄されます。
貼り付け 現在の選択をクリップボードの内容で置き換えます。 クリップボードの内容は変更されません。
削除 文書から現在の選択範囲を削除します。 クリップボードの内容は変更されません。 このコマンドにはクリップボードは含まれませんが、[編集] メニューのクリップボード コマンドと共に表示されます。

 

クリップボード シーケンス番号

各ウィンドウ ステーションのクリップボードには、クリップボードのシーケンス番号が関連付けられています。 この数値は、クリップボードの内容が変更されるたびにインクリメントされます。 クリップボードのシーケンス番号を取得するには、 GetClipboardSequenceNumber 関数を呼び出します。

クリップボード ビューアー

クリップボード ビューアーは、クリップボードの現在のコンテンツを表示するウィンドウです。 クリップボード ビューアー ウィンドウはユーザーにとって便利であり、クリップボードのデータ トランザクション関数には影響しません。

通常、クリップボード ビューア ウィンドウには、次のような、少なくとも 3 つの最も一般的な形式を表示できます。 CF_TEXT, CF_BITMAP, CF_METAFILEPICT. ウィンドウでこれら 3 つの形式のいずれかでデータを使用できない場合は、表示形式でデータを提供するか、所有者表示形式を使用する必要があります。

クリップボード ビューアー チェーン とは、2 つ以上のエンティティが互いに依存して操作できるようにリンクすることです。 この相互依存 (チェーン) により、実行中のすべてのクリップボード ビューアー アプリケーションが、現在のクリップボードに送信されたメッセージを受信できます。

このセクションでは、次のトピックについて説明します。

クリップボード ビューアー ウィンドウ

SetClipboardViewer 関数を呼び出して、ウィンドウがクリップボード ビューアー チェーンに追加されます。 戻り値は、チェーン内の次のウィンドウへのハンドルです。 チェーン内の最初のウィンドウへのハンドルを取得するには、 GetClipboardViewer 関数を呼び出します。

各クリップボード ビューアー ウィンドウは、クリップボード ビューアー チェーン内の次のウィンドウを追跡する必要があります。 クリップボードの内容が変更されると、システムはチェーンの最初のウィンドウに WM_DRAWCLIPBOARD メッセージを送信します。 表示を更新した後、各クリップボード ビューアー ウィンドウは、チェーン内の次のウィンドウにこのメッセージを渡す必要があります。

クリップボード ビューアー ウィンドウを閉じる前に、 ChangeClipboardChain 関数を呼び出して、クリップボード ビューアー のチェーンからそれ自体を削除する必要があります。 その後、システムはチェーン内の最初の ウィンドウに WM_CHANGECBCHAIN メッセージを送信します。

WM_DRAWCLIPBOARD および WM_CHANGECBCHAIN メッセージの処理の詳細については、「クリップボード ビューアー ウィンドウの作成」を参照してください。

表示形式

表示形式は、クリップボード ビューアー ウィンドウに情報を表示するために使用されるクリップボード形式です。 プライベートまたは登録済みのクリップボード形式を使用し、最も一般的な標準形式を使用しないクリップボード所有者は、クリップボード ビューアー ウィンドウで表示するための表示形式でデータを提供する必要があります。 表示形式は表示のみを目的としており、ドキュメントに貼り付けてはなりません。

4 つの表示形式は、 CF_DSPBITMAPCF_DSPMETAFILEPICTCF_DSPTEXT、および CF_DSPENHMETAFILE です。 これらの表示形式は、 CF_BITMAPCF_TEXTCF_METAFILEPICT、および CF_ENHMETAFILE の標準形式と同じ方法でレンダリングされます。

所有者の表示形式

一般的な標準のクリップボード形式を使用しないクリップボード所有者の場合、表示形式を指定する代わりに、所有者表示 (CF_OWNERDISPLAY) クリップボード形式を使用します。

所有者表示形式を使用すると、クリップボードの所有者は、クリップボード ビューアー ウィンドウの描画を直接制御することで、追加の形式でデータをレンダリングするオーバーヘッドを回避できます。 クリップボード ビューアー ウィンドウは、ウィンドウの一部を再描画する必要がある場合、またはウィンドウがスクロールまたはサイズ変更されるたびに、クリップボードの所有者にメッセージを送信します。

標準のクリップボード形式