次の方法で共有


シェル クリップボードの形式

シェル クリップボード形式は、クリップボードを介して転送されるシェル データの種類を識別するために使用されます。 ほとんどのシェル クリップボード形式は、ファイル名のリストや項目識別子リスト (PIDL) へのポインターなど、データの種類を識別します。 ただし、ソースとターゲットの間の通信には、一部の形式が使用されます。 最適化された移動 delete_on_pasteなどのシェル操作 サポートすることで、データ転送プロセスを迅速化できます。 シェル データは、データを特徴付ける一般的な方法として FORMATETC 構造体を使用する データ オブジェクト に常に含まれます。 構造体の cfFormat メンバーは、データの特定の項目のクリップボード形式に設定されます。 他のメンバーは、データ転送メカニズムなどの追加情報を提供します。 このデータは、付随する STGMEDIUM 構造に含まれています。

手記

標準クリップボード形式識別子には、XXXCF_フォームがあります。 一般的な例として、ANSI テキスト データの転送に使用されるCF_TEXTがあります。 これらの識別子には定義済みの値があり、FORMATETC構造体直接使用できます。 CF_HDROPを除き、シェル形式識別子は定義済みではありません。 DragWindow を除き、XXXCFSTR_形式になります。 これらの値を定義済みの形式と区別するために、多くの場合、単に 形式と呼ばれます。 ただし、定義済みの形式とは異なり、データの転送に使用する前に、ソースとターゲットの両方で登録する必要があります。 シェル形式を登録するには、Shlobj.h ヘッダー ファイルを含め、CFSTR_XXX 形式識別子を RegisterClipboardFormat 渡します。 この関数は有効なクリップボード形式の値を返します。この値は、FORMATETC 構造体の cfFormat メンバーとして使用できます。

 

シェル クリップボードの形式は、使用方法に基づいて 3 つのグループに編成されています。

ファイル システム オブジェクトを転送するための形式

これらの形式は、1 つ以上のファイルまたは他のシェル オブジェクトを転送するために使用されます。

CF_HDROP

このクリップボード形式は、既存のファイルのグループの場所を転送するときに使用されます。 他のシェル形式とは異なり、定義済みであるため、RegisterClipboardFormat 呼び出す必要はありません。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM 構造体で構成されます。 構造体の hGlobal メンバーは、hGlobal メンバーとして、DROPFILES 構造体を指します。

DROPFILES 構造体の pFiles メンバーには、ファイル名を含む二重 null-terminated 文字配列へのオフセットが含まれています。 データ オブジェクトからCF_HDROP形式を抽出する場合は、DragQueryFileを使用して、グローバル メモリ オブジェクトから個々のファイル名を抽出できます。 データ オブジェクトに配置するCF_HDROP形式を作成する場合は、ファイル名配列を作成する必要があります。

ファイル名の配列は一連の文字列で構成され、それぞれが 1 つのファイルの完全修飾パスを含み、終端 NULL 文字を含みます。 配列を終了するために、最後の文字列に追加の null 文字が追加されます。 たとえば、ファイル c:\temp1.txt と c:\temp2.txt が転送されている場合、文字配列は次のようになります。

c:\temp1.txt'\0'c:\temp2.txt'\0''\0'

手記

この例では、'\0' は、含めるリテラル文字ではなく、null 文字を表すために使用されます。

ドラッグ アンド ドロップ操作の一環としてオブジェクトがクリップボードにコピーされた場合、DROPFILES 構造体の pt メンバーには、オブジェクトがドロップされたポイントの座標が含まれます。 DragQueryPoint を使用してカーソル座標を抽出できます。

この形式がデータ オブジェクトに存在する場合、OLE ドラッグ ループは OLE 以外のドロップ ターゲット WM_DROPFILES 機能をシミュレートします。 これは、アプリケーションが Windows 3.1 システムでのドラッグ アンド ドロップ操作のソースである場合に重要です。

CFSTR_FILECONTENTS

この形式識別子は、CFSTR_FILEDESCRIPTOR 形式と共に使用され、実際の格納方法に関係なく、ファイルであるかのようにデータを転送します。 データは、1 つのファイルの内容を表す STGMEDIUM 構造体で構成されます。 通常、ファイルはストリーム オブジェクトとして表されるため、ファイルの内容をメモリに配置する必要がなくなります。 その場合、STGMEDIUM 構造体の メンバーはTYMED_ISTREAMに設定され、ファイルは IStream インターフェイスによって表されます。 ファイルには、ストレージ またはグローバル メモリ オブジェクト (TYMED_ISTORAGE または TYMED_HGLOBAL) を指定することもできます。 関連付けられているCFSTR_FILEDESCRIPTOR形式には、ファイルの名前と属性を指定する各ファイルの FILEDESCRIPTOR 構造体が含まれています。

ターゲットは、CFSTR_FILECONTENTS形式に関連付けられているデータを、ファイルであるかのように扱います。 ターゲットが IDataObject::GetDataを呼び出してデータを抽出する場合、FORMATETC 構造体の lindex メンバーを、ファイルの FILEDESCRIPTOR 構造体の 0 から始まるインデックスに、付随する CFSTR_FILEDESCRIPTOR 形式で設定することによって、特定のファイルを指定します。 ターゲットは、返されたインターフェイス ポインターまたはグローバル メモリ ハンドルを使用してデータを抽出します。

CFSTR_FILEDESCRIPTOR

この形式識別子は、ファイルのグループとしてデータを転送するために、CFSTR_FILECONTENTS 形式で使用されます。 これら 2 つの形式は、ファイル システム ファイルとして格納されていないシェル オブジェクトを転送する場合に推奨される方法です。 たとえば、これらの形式を使用して、電子メール メッセージのグループを個々のファイルとして転送できます。ただし、各メールは実際にはデータベース内のデータ ブロックとして格納されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM 構造体で構成されます。 構造体の hGlobal メンバーは、FILEGROUPDESCRIPTOR 構造体を指し、その後に、グループ内の各ファイルの 1 つの FILEDESCRIPTOR 構造体を含む配列を指します。 FILEDESCRIPTOR 構造体 ごとに、ファイルの内容を含む個別のCFSTR_FILECONTENTS形式があります。 特定のファイルのCFSTR_FILECONTENTS形式を識別するには、FORMATETC 構造体の lIndex 値を、ファイルの FILEDESCRIPTOR 構造体の 0 から始まるインデックスに設定します。

CFSTR_FILEDESCRIPTOR形式は、実際の格納方法に関係なく、ファイルのグループであるかのようにデータを転送するために一般的に使用されます。 ターゲットの観点からは、各CFSTR_FILECONTENTS形式は 1 つのファイルを表し、それに応じて処理されます。 ただし、ソースは任意の方法でデータを格納できます。 CSFTR_FILECONTENTS形式は 1 つのファイルに対応する場合もありますが、たとえば、データベースまたはテキスト ドキュメントからソースによって抽出されたデータを表すこともできます。

CFSTR_FILENAME

この形式識別子は、1 つのファイルを転送するために使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM 構造体で構成されます。 構造体の hGlobal メンバーは、ファイルの完全修飾ファイル パスを含む単一の null-terminated 文字列を指します。 この形式は CF_HDROPに置き換わりましたが、Windows 3.1 アプリケーションとの下位互換性のためにサポートされています。

CFSTR_FILENAMEMAP

この形式識別子は、CF_HDROP 形式のファイルのグループの名前が変更され、転送されるときに使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM 構造体で構成されます。 構造体の hGlobal メンバーは、二重 null-terminated 文字配列を指します。 この配列には、ファイルが付属のCF_HDROP形式で一覧表示されるのと同じ順序で、各ファイルの新しい名前が含まれています。 文字配列の形式は、転送されたファイルを一覧表示するためにCF_HDROPで使用される形式と同じです。

CFSTR_MOUNTEDVOLUME

このフォーマット識別子は、マウントされたボリューム上のパスを転送するために使用されます。 CF_HDROPに似ていますが、1 つのパスのみが含まれており、ボリュームがフォルダーにマウントされるときにパスを表すために必要な長いパス文字列を処理できます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM 構造体で構成されます。 構造体の hGlobal メンバーは、完全修飾ファイル パスを含む単一の null-terminated 文字列を指します。 パス文字列は '\' 文字で終わり、その後に NULL で終わる必要があります。

Windows 2000 より前のバージョンでは、ボリュームはドライブ文字にのみマウントできました。 NTFS 形式のドライブを備えた Windows 2000 以降のシステムの場合は、空のフォルダーにボリュームをマウントすることもできます。 この機能により、ドライブ文字を取り込まずにボリュームをマウントできます。 マウントされたボリュームでは、FAT、FAT32、NTFS、CDFS など、現在サポートされている任意の形式を使用できます。

プロパティ シート ハンドラーを実装することで、Drive Properties プロパティ シートにページを追加できます。 ボリュームがドライブ文字にマウントされている場合、シェルはパス情報を CF_HDROP 形式でハンドラーに渡します。 Windows 2000 以降のシステムでは、CF_HDROP形式は、以前のシステムと同様に、ボリュームがドライブ文字にマウントされるときに使用されます。 ただし、ボリュームがフォルダーにマウントされている場合は、CF_HDROPの代わりに CFSTR_MOUNTEDVOLUME 形式識別子が使用されます。

ボリュームのマウントにドライブ文字のみを使用する場合は、CF_HDROP のみが使用され、既存のプロパティ シート ハンドラーは以前のシステムと同様に機能します。 ただし、フォルダーとドライブ文字にマウントされているボリュームのページをハンドラーに表示する場合、ハンドラーはCSFTR_MOUNTEDVOLUME形式とCF_HDROP形式の両方を理解できる必要があります。

CFSTR_SHELLIDLIST

この形式識別子は、1 つ以上の既存の名前空間オブジェクトの場所を転送するときに使用されます。 CF_HDROPとほぼ同じ方法で使用されますが、ファイル システム パスの代わりに PIDL が含まれています。 PIDL を使用すると、CFSTR_SHELLIDLIST形式で仮想オブジェクトとファイル システム オブジェクトを処理できます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、CIDA 構造体を指します。

CIDA 構造体の aoffset メンバーは、転送される各 PIDL の ITEMIDLIST 構造体の先頭へのオフセットを含む配列です。 特定の PIDL を抽出するには、最初にそのインデックスを決定します。 次に、そのインデックスに対応する aoffset 値を、CIDA 構造体のアドレスに追加します。

aoffset の最初の要素には、親フォルダーの完全修飾 PIDL へのオフセットが含まれています。 この PIDL が空の場合、親フォルダーはデスクトップです。 配列の残りの各要素には、転送する PIDL のいずれかに対するオフセットが含まれています。 これらの PIDL はすべて、親フォルダーの PIDL に対して相対的です。

次の 2 つのマクロを使用して、CIDA 構造体から PIDL を取得できます。 1 つ目は構造体へのポインターを受け取り、親フォルダーの PIDL を取得します。 2 つ目は構造体へのポインターを受け取り、0 から始まるインデックスで識別される他の PIDL の 1 つを取得します。

#define GetPIDLFolder(pida) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[0])

#define GetPIDLItem(pida, i) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])

手記

これらのマクロによって返される値は、PIDL の ITEMIDLIST 構造体へのポインターです。 これらの構造体は長さが異なるため、ITEMIDLIST 構造体の各 SHITEMID 構造体を、末尾をマークする 2 バイトの NULL に到達するまで、構造体の終わりを確認する必要があります。

CFSTR_SHELLIDLISTOFFSET

この書式識別子は、転送後のオブジェクトのグループの位置を指定するために、CF_HDROPCFSTR_SHELLIDLISTCFSTR_FILECONTENTS などの形式で使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM 構造体で構成されます。 構造体の hGlobal メンバーは、POINT 構造体の配列を指します。 最初の構造体は、グループを囲む四角形の左上隅の画面座標をピクセル単位で指定します。 構造体の残りの部分では、グループの位置に対する個々のオブジェクトの位置を指定します。 これらは、関連付けられた形式でオブジェクトを一覧表示するために使用される順序と同じ順序である必要があります。

仮想オブジェクトを転送するための形式

CFSTR_SHELLIDLIST形式を使用して、ファイル システムと仮想オブジェクトの両方を転送できます。 ただし、特定の種類の仮想オブジェクトを転送するための特殊な形式もあります。

CFSTR_NETRESOURCES

この形式識別子は、ドメインやサーバーなどのネットワーク リソースを転送するときに使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、NRESARRAY 構造体を指します。 その構造体の nr メンバーは、lpRemoteName メンバーにネットワーク リソースを識別する null-terminated 文字列が含まれる、NETRESOURCE 構造体を示します。 その後、ドロップ ターゲットは、Windows ネットワーク (WNet) API 関数 (WNetAddConnectionなど) と共にデータを使用して、オブジェクトに対するネットワーク操作を実行できます。

CFSTR_PRINTERGROUP

このフォーマット識別子は、プリンターのフレンドリ名を転送するときに使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、CF_HDROPで使用されるのと同じ形式の文字列を指します。 ただし、DROPFILES 構造体の pFiles メンバーには、ファイル パスではなく、プリンターの 1 つ以上のフレンドリ名が含まれています。

CFSTR_INETURL

この形式識別子は、CFSTR_SHELLURL (非推奨) のを置き換えます。 アプリケーションでクリップボードの URL を操作する場合は、CFSTR_SHELLURLではなくCFSTR_INETURLを使用します (非推奨)。 この形式は、1 つの URL の最適なクリップボード表現を提供します。 UNICODE が定義されていない場合、アプリケーションは URL のCF_TEXT/CFSTR_SHELLURL バージョンを取得します。 UNICODE が定義されている場合、アプリケーションは URL のCF_UNICODEバージョンを取得します。

CFSTR_SHELLURL (非推奨)

手記

この形式識別子は非推奨になりました。代わりにCFSTR_INETURLを使用してください。

 

ソースとターゲットの間の通信の形式

これらの形式識別子を使用すると、ソースとターゲットの間の通信が可能になります。 この形式はデータに付随し、シェル オブジェクトを含む移動/コピー/貼り付け操作またはドラッグ アンド ドロップ操作をより高度に制御できます。

CFSTR_INDRAGLOOP

この形式識別子は、データ オブジェクトがドラッグ アンド ドロップ ループ内にあるかどうかを示すために使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、DWORD 値を指します。 DWORD 値が 0 以外の場合、データ オブジェクトはドラッグ アンド ドロップ ループ内にあります。 値が 0 に設定されている場合、データ オブジェクトはドラッグ アンド ドロップ ループ内にありません。

一部のドロップ ターゲットでは、IDataObject::GetData呼び出して、オブジェクトがまだドラッグ アンド ドロップ ループ内にある間にデータの抽出を試みる場合があります。 このような発生ごとにオブジェクトを完全にレンダリングすると、ドラッグ カーソルがストールする可能性があります。 データ オブジェクトが CFSTR_INDRAGLOOPをサポートしている場合、ターゲットは代わりにその形式を使用してドラッグ アンド ドロップ ループの状態を確認し、オブジェクトが実際にドロップされるまでメモリを大量に消費するレンダリングを回避できます。 レンダリングするメモリを集中的に消費する形式は、FORMATETC 列挙子および IDataObject::QueryGetData呼び出しに含める必要があります。 データ オブジェクトがCFSTR_INDRAGLOOP設定されていない場合は、値が 0 に設定されているかのように動作する必要があります。

CFSTR_LOGICALPERFORMEDDROPEFFECT

バージョン 5.0 を します。この形式識別子を使用すると、ドロップ ソースはデータ オブジェクトの IDataObject::GetData メソッドを呼び出して、シェルデータ転送の結果を判断できます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、DROPEFFECT 値を含む DWORD を指します。

CFSTR_PERFORMEDDROPEFFECT 形式識別子は、ターゲットが実際に実行された操作をデータ オブジェクトに示すことを目的としていました。 ただし、シェルでは、可能な限り、ファイル システム オブジェクト 最適化された移動 が使用されます。 その場合、シェルは通常、元のデータが削除されたことをデータ オブジェクトに示すために、CFSTR_PERFORMEDDROPEFFECT値を DROPEFFECT_NONE に設定します。 したがって、ソースはCFSTR_PERFORMEDDROPEFFECT値を使用して、実行された操作を特定できません。 ほとんどのソースではこの情報は必要ありませんが、いくつかの例外があります。 たとえば、最適化された移動によってソースがデータを削除する必要がなくなる場合でも、ソースは関連するデータベースを更新して、ファイルが移動またはコピーされたことを示す必要がある場合があります。

ソースで実行された操作を把握する必要がある場合は、データ オブジェクトの IDataObject::GetData メソッドを呼び出し、CFSTR_LOGICALPERFORMEDDROPEFFECT形式を要求できます。 この形式は、基本的に、操作が完了した後にユーザーの観点から何が起こるかを反映しています。 新しいファイルが作成され、元のファイルが削除されると、ユーザーに移動操作が表示され、形式のデータ値がDROPEFFECT_MOVEに設定されます。 元のファイルがまだ存在する場合、ユーザーにはコピー操作が表示され、形式のデータ値がDROPEFFECT_COPYに設定されます。 リンクが作成された場合、形式のデータ値はDROPEFFECT_LINKされます。

CFSTR_PASTESUCCEEDED

この形式識別子は、ターゲットが、IDataObject::SetData メソッドを使用して、貼り付け時の削除操作が成功したことをデータ オブジェクトに通知するために使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、DROPEFFECT 値を含む DWORD を指します。 この形式は、切り取り操作を完了し、必要に応じて元のデータを削除する必要があることをデータ オブジェクトに通知するために使用されます。 詳細については、「貼り付け時の削除操作の」を参照してください。

CFSTR_PERFORMEDDROPEFFECT

この形式識別子は、データ転送の結果の IDataObject::SetData メソッドを使用してデータ オブジェクトに通知するために、ターゲットによって使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、適切な DROPEFFECT 値 (通常はDROPEFFECT_MOVEまたはDROPEFFECT_COPY) に設定された DWORD を指します。

通常、この形式は、最適化された移動 や貼り付け時の削除操作など、操作の結果を移動またはコピーできる場合に使用されます。 これは、ターゲットが実際に何が起こったかをデータ オブジェクトに伝える信頼性の高い方法を提供します。 これは、DoDragDrop によって返される pdwEffect 値が、実行された操作を確実に示さなかったために導入されました。 CFSTR_PERFORMEDDROPEFFECT 形式は、最適化されていない移動が行われたことを示す信頼性の高い方法です。

CFSTR_PREFERREDDROPEFFECT

この形式識別子は、データ転送の推奨される方法が移動かコピーかを指定するために、ソースによって使用されます。 ドロップ ターゲットは、データ オブジェクトの IDataObject::GetData メソッドを呼び出すことによって、この形式を要求します。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、DWORD 値を指します。 この値は、移動操作が優先される場合はDROPEFFECT_MOVEに設定され、コピー操作が優先される場合はDROPEFFECT_COPYされます。

この機能は、ソースが移動操作またはコピー操作をサポートできる場合に使用されます。 CFSTR_PREFERREDDROPEFFECT 形式を使用して、その優先設定をターゲットに伝達します。 ターゲットは要求を受け入れる義務がないため、ターゲットはソースの IDataObject::SetData メソッドを CFSTR_PERFORMEDDROPEFFECT 形式で呼び出して、実際に実行された操作をデータ オブジェクトに通知する必要があります。

貼り付け時の削除 操作では、CFSTR_PREFERREDDROPFORMAT形式を使用して、ソースが切り取りまたはコピーを行ったかどうかをターゲットに通知します。 ドラッグ アンド ドロップ操作では、CFSTR_PREFERREDDROPFORMATを使用してシェルのアクションを指定できます。 この形式が存在しない場合、シェルはコンテキストに基づいて既定のアクションを実行します。 たとえば、あるボリュームからファイルをドラッグして別のボリュームにドロップした場合、シェルの既定のアクションはファイルをコピーすることです。 データ オブジェクトにCFSTR_PREFERREDDROPFORMAT形式を含めることで、既定のアクションをオーバーライドし、ファイルのコピー、移動、またはリンクをシェルに明示的に指示できます。 ユーザーが右ボタンでドラッグすることを選択した場合、CFSTR_PREFERREDDROPFORMATは、のドラッグ アンド ドロップ ショートカット メニューで既定のコマンド 指定します。 ユーザーは引き続きメニューの他のコマンドを自由に選択できます。

Microsoft Internet Explorer 4.0 より前のアプリケーションでは、FILEDESCRIPTOR 構造体のメンバー dwFlags にFD_LINKUIを設定して、ショートカット ファイルの種類を転送していることを示していました。 その後、ターゲットは、FD_LINKUI フラグが設定されているかどうかを調べるために、IDataObject::GetData に時間がかかる可能性のある呼び出しを使用する必要がありました。 ここで、ショートカットが転送されていることを示す推奨される方法は、DROPEFFECT_LINKに設定されたCFSTR_PREFERREDDROPEFFECT形式を使用する方法です。 ただし、古いシステムとの下位互換性のために、ソースは引き続き FD_LINKUI フラグを設定する必要があります。

CFSTR_TARGETCLSID

この形式識別子は、ソースに CLSID を提供するためにターゲットによって使用されます。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM構造体です。 構造体の hGlobal メンバーは、ドロップ ターゲットの CLSID GUID を指します。

この形式は、主にオブジェクトをごみ箱にドラッグして削除できるようにするために使用されます。 オブジェクトがごみ箱にドロップされると、ソースの IDataObject::SetData メソッドは、ごみ箱の CLSID (CLSID_RecycleBin) に設定されたCFSTR_TARGETCLSID形式で呼び出されます。 ソースは、元のオブジェクトを削除できます。

CFSTR_UNTRUSTEDDRAGDROP

この形式識別子は、Windows Internet Explorer と Windows シェルによって使用され、Internet Explorer から発生するドラッグ アンド ドロップ操作をブロックまたはプロンプトするメカニズムを、URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY フラグと組み合わせて提供します。

CFSTR_UNTRUSTEDDRAGDROP は、ドラッグ アンド ドロップ操作のソースによって追加され、データ オブジェクトに信頼できないデータが含まれている可能性があることを指定します。 データは、グローバル メモリ オブジェクトを含む STGMEDIUM 構造体によって表されます。 構造体の hGlobal メンバーは、適切な URL アクション フラグに設定 DWORD をポイントし、PUAF_ENFORCERESTRICTED フラグを使用して、IInternetSecurityManager::P rocessUrlAction メソッドを使用してポリシー チェックを実行します。

DragWindow

この形式は、オブジェクトのドラッグ イメージ (ウィンドウ) を識別するドラッグ アンド ドロップ操作で使用され、ビジュアル情報を動的に更新できます。 オブジェクトがドロップ ターゲットの上にドラッグされると、アプリケーションは、IDropTarget::D ragOverまたは IDropSource::GiveFeedback メソッドに応答して、DROPDESCRIPTION 構造体を更新します。 DROPDESCRIPTION は、ドラッグ ウィンドウのビジュアルに適用する装飾を示す新しい DROPIMAGETYPE 値で更新されます。たとえば、ファイルが移動されずにコピーされているか、オブジェクトをその場所にドロップできないことを示します。 ただし、オブジェクトが DDWM_UPDATEWINDOW メッセージを受信するまで、ビジュアルは更新されません。 この形式は、受信者のドラッグ ウィンドウの HWND を、DDWM_UPDATEWINDOW メッセージの送信者に提供します。

クリップボードのデータは、TYMED_HGLOBALの種類です。 これは、HWNDDWORD 表現です。 Basetsd.h で定義されている ULongToHandle 関数にデータを渡して、64 ビット Windows で使用する 64 ビット HWND を提供できます。

この形式では、Shlobj.h を含める必要はありません。