対応する WinEvents を持つ注釈プロパティ
頻繁に変更されるプロパティ、特に WinEvent の結果としてクライアントによって検査されるプロパティ ( State、 Value、一部のコントロールの 場合は Name プロパティなど) をオーバーライドする場合は注意してください。
多くの場合 (特に USER コントロールと ComCtl コントロールの場合)、プロパティの変更を通知する WinEvent は、コントロールの所有者に通知される前に送信されます (通常は WM_NOTIFY経由)。 WM_NOTIFY ハンドラーで SetPropValue を 使用してプロパティを更新すると、遅すぎます。コンテキスト内フックを使用するクライアントは、既に古い値にアクセスしています。
これらの種類のプロパティは、コールバック サーバー オブジェクト ( SetPropServer を使用) を使用して処理できます。ただし、サーバーは、WM_NOTIFY ハンドラーで更新された状態を使用できません。これは、そのハンドラーがまだ呼び出されていないためです。 たとえば、WM_NOTIFY ハンドラーで更新され、古くなるキャッシュされた現在の値変数を使用する代わりに、 IAccPropServer::GetPropValue コールバック オブジェクトは、必要なプロパティを生成するために実際の現在の値を取得するために、コントロールに直接メッセージを送信する必要があります。