Condividi tramite


Proprietà di annotazione con eventi WinEvent corrispondenti

Prestare attenzione quando si esegue l'override delle proprietà che cambiano di frequente, in particolare quelle esaminate dai client in seguito a un evento WinEvent,ad esempio State, Value e, per alcuni controlli, le proprietà Name .

In molti casi, in particolare per i controlli USER e ComCtl, il winEvent che segnala una modifica di proprietà viene inviato prima che il proprietario del controllo venga informato (in genere tramite WM_NOTIFY). L'aggiornamento della proprietà tramite SetPropValue nel gestore WM_NOTIFY sarà troppo tardi; i client che usano l'hook nel contesto avranno già eseguito l'accesso al valore precedente.

È possibile gestire questi tipi di proprietà usando oggetti server di callback (tramite SetPropServer); Tuttavia, il server non può usare alcuno stato aggiornato nel gestore WM_NOTIFY perché tale gestore non sarà ancora stato chiamato. Ad esempio, invece di utilizzare una variabile di valore corrente memorizzata nella cache aggiornata nel gestore WM_NOTIFY e non aggiornata, l'oggetto di callback IAccPropServer::GetPropValue deve inviare un messaggio direttamente al controllo per ottenere il valore corrente effettivo per generare la proprietà richiesta.