データオブジェクト内のデータが変更されたことを、現在登録されているアドバイスシンクに通知するためにサーバーから呼び出される。
IAdviseSink_OnDataChange this, pFormatetc, pStgmed
this : [comobj] IAdviseSink インターフェースの COM オブジェクト変数 pFormatetc : [var] 呼び出し元のデータオブジェクトの形式、ターゲットデバイス、レンダリング、ストレージ情報を記述する FORMATETC 構造体へのポインタ。 pStgmed : [int] 呼び出し元のデータオブジェクトに関する記憶媒体(グローバルメモリ、ディスクファイル、ストレージオブジェクト、ストリームオブジェクト、GDI オブジェクト、または未定義)とその所有権を定義する STGMEDIUM 構造体へのポインタ。
(プラグイン / モジュール : com_misc.dll)
データオブジェクト内のデータが変更されたことを、現在登録されているアドバイスシンクに通知するためにサーバーから呼び出される。 [備考] リンクオブジェクトのオブジェクトハンドラやコンテナは、オブジェクト内のデータが変更されたという通知を受けたときに適切な処理を行うために IAdviseSink::OnDataChange を実装する。また、興味のあるオブジェクトとアドバイザリ接続を確立するために IDataObject::DAdvise を呼び出さなければならない。OLE のキャッシュサポートを利用するコンテナは、データ変更通知を登録する必要はない。なぜなら、コンテナがオブジェクトを表示するために必要な情報(データの変更を含む)はすべてオブジェクトのキャッシュ内に保持されるからである。実装者への注意 コンテナで IAdviseSink::OnDataChange を実装する場合、このメソッドは非同期であり、非同期メソッド内で同期呼び出しを行うことは無効である点に注意すること。したがって、オブジェクトの更新に必要なデータを取得するために IDataObject::GetData を呼び出すことはできない。代わりに、内部メッセージをポストするか、InvalidateRect を呼び出して変更されたデータの矩形を無効化し、WM_PAINT メッセージを待ってからデータを取得しオブジェクトを更新する。データ自体は呼び出しの間だけ有効で、pStgmed が指す記憶媒体を介して渡される。媒体の所有権は呼び出し元にあるため、アドバイスシンクはそれを解放してはならない。また、pStgmed が IStorage や IStream インターフェースを指している場合、シンクは参照カウントをインクリメントしてはならない。
| プラグイン / モジュール | 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 |