IDataObject_GetCanonicalFormatEtc

論理的に等価で、場合によっては異なる FORMATETC 構造体を提供する。このメソッドは 2 つの異なる FORMATETC 構造体が同じデータを返すかどうかを判定するのに使用し、重複したレンダリングを不要にする。

IDataObject_GetCanonicalFormatEtc this, pformatectIn, pformatetcOut

this : [comobj] IDataObject インターフェースの COM オブジェクト変数
pformatectIn : [var] 呼び出し側が後続の IDataObject::GetData のような呼び出しでデータを取得するために使いたい形式、メディウム、ターゲットデバイスを定義する FORMATETC 構造体へのポインター。この場合 tymed メンバーは重要ではなく、無視されるべきである。
pformatetcOut : [var] 特定のレンダリングに可能な限り一般的な情報を含み、pformatetcIn と正準的に等価となる FORMATETC 構造体へのポインター。この構造体は呼び出し側が確保し、GetCanonicalFormatEtc メソッドがデータを埋める。後続の IDataObject::GetData のような呼び出しでデータを取得する際、呼び出し側は pformatetcOut の指定値が NULL でない限りそれを使用する。この値はメソッドが DATA_S_SAMEFORMATETC を返した場合に NULL となる。この場合 tymed メンバーは重要ではなく、無視されるべきである。

(プラグイン / モジュール : com_misc.dll)

解説

論理的に等価で、場合によっては異なる FORMATETC 構造体を提供する。このメソッドは 2 つの異なる FORMATETC
構造体が同じデータを返すかどうかを判定するのに使用し、重複したレンダリングを不要にする。

[戻り値]
このメソッドは以下の値を返すことがある。
(以下省略)

[備考]
データオブジェクトが複数の要求された FORMATETC
構造体に対してまったく同じデータを供給できる場合、GetCanonicalFormatEtc は複数のより複雑な FORMATETC
構造体のセットと同じレンダリングを与える「正準」または標準の FORMATETC を供給できる。例えば、返されるデータが他の点では類似した
FORMATETC 構造体のセット内のどの 1 つで指定されたターゲットデバイスにも影響されないことはよくある。呼び出し側へのメモ 2
つの異なる FORMATETC 構造体を指定してデータオブジェクトに対して IDataObject::GetData を 2
回呼び出したときに、実際に同じレンダリングが生成されるかどうかをこのメソッドで判定できる。これにより 2
回目の呼び出しが不要になり、性能が向上する。GetCanonicalFormatEtc の呼び出しで pformatetcOut
パラメーターに正準形式が書き込まれた場合、呼び出し側はその構造体を以降の IDataObject::GetData
呼び出しで使用する。実装者へのメモ 概念的には、同じ結果を提供する正準 FORMATETC によって定義されるグループに
FORMATETC 構造体を分類できる。正準 FORMATETC
を構築するときは、特定のレンダリングを生成しつつ可能な限り一般的な情報を含むようにすべきである。デバイス固有のレンダリングを提供しないデータオブジェクトの場合、このメソッドの最も単純な実装は入力
FORMATETC を出力 FORMATETC にコピーし、出力 FORMATETC の ptd メンバーに NULL を格納して
DATA_S_SAMEFORMATETC を返すことである。

情報

プラグイン / モジュールcom_misc.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_com_misc_gen2.hs