論理的に等価で、場合によっては異なる 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 |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_com_misc_gen2.hs |