Anmerkungseigenschaften mit entsprechenden WinEvents
Seien Sie vorsichtig beim Überschreiben von Eigenschaften, die sich häufig ändern, insbesondere solche, die von Clients als Ergebnis eines WinEvents untersucht werden (z. B. State, Value und bei einigen Steuerelementen die Eigenschaften Name ).
In vielen Fällen, insbesondere bei USER- und ComCtl-Steuerelementen, wird das WinEvent, das eine Eigenschaftsänderung signalisiert, gesendet, bevor der Besitzer des Steuerelements benachrichtigt wird (in der Regel über WM_NOTIFY). Das Aktualisieren der Eigenschaft mithilfe von SetPropValue im WM_NOTIFY-Handler erfolgt zu spät. Clients, die kontextinternes Hooking verwenden, haben bereits auf den alten Wert zugegriffen.
Sie können diese Eigenschaftentypen mithilfe von Rückrufserverobjekten (mithilfe von SetPropServer) behandeln. Der Server kann jedoch keinen Zustand verwenden, der im WM_NOTIFY-Handler aktualisiert wird, da dieser Handler noch nicht aufgerufen wurde. Anstatt beispielsweise eine zwischengespeicherte aktuelle Wertvariable zu verwenden, die im WM_NOTIFY-Handler aktualisiert wird und veraltet ist, sollte das IAccPropServer::GetPropValue-Rückrufobjekt eine Nachricht direkt an das Steuerelement senden, um seinen aktuellen True-Wert abzurufen, um die erforderliche Eigenschaft zu generieren.