IAdviseSink_OnDataChange

データオブジェクト内のデータが変更されたことを、現在登録されているアドバイスシンクに通知するためにサーバーから呼び出される。

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
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