Uso dell'annotazione del server
In questo argomento vengono fornite informazioni sull'uso dell'annotazione del server per specificare un oggetto callback.
Per eseguire l'override di una proprietà che specifica un oggetto callback
- Ottenere un puntatore all'interfaccia IAccessible per l'elemento accessibile che deve essere annotato.
- Chiamare QueryInterface sull'elemento accessibile per ottenere un puntatore all'interfaccia IAccIdentity .
- Chiamare IAccIdentity::GetIdentityString() sul puntatore all'interfaccia IAccIdentity per ottenere una stringa che identifica in modo univoco l'elemento accessibile da annotare.
- Utilizzare CoCreateInstance o CoCreateInstanceEx per creare l'oggetto IAccPropServices .
- Creare un oggetto COM (Component Object Model) che implementa IAccPropServer.
- Chiamare IAccPropServices::SetPropServer, passando la stringa di identità, un GUID che indica la proprietà di cui eseguire l'override e un puntatore all'oggetto callback IAccPropServer .
- Puntatori all'interfaccia di rilascio e memoria libera.
Quando un client richiede la proprietà dell'elemento accessibile, l'oggetto callback verrà chiamato e restituirà il valore al client.
Come quando si specifica un valore, gli sviluppatori di server possono in alternativa usare il metodo IAccPropServices::ComposeHwndIdentityString per ottenere una stringa di identità; oppure possono usare il metodo IAccPropServices::SetHwndPropServer e specificare i parametri hwnd, idObject o idChild anziché una stringa identity.
Quando si usa SetPropServer o SetHwndPropServer in un oggetto contenitore, gli sviluppatori del server possono facoltativamente specificare che le informazioni di override devono essere applicate anche a tutti gli elementi figlio di tale contenitore.
I server possono cancellare in modo esplicito l'annotazione in qualsiasi momento usando IAccPropServices::ClearProps. Questa operazione non è in genere necessaria, poiché il servizio di annotazione pulisce automaticamente e rilascia le informazioni sulle annotazioni quando l'elemento accessibile da annotare scompare.
Di seguito è riportato un elenco di proprietà che possono essere annotate usando questa procedura.
Proprietà supportate quando si specifica un callback
Quando si specifica un callback, è possibile annotare le proprietà seguenti. Attualmente queste proprietà non possono essere annotate direttamente specificando un valore.
Proprietà | Type |
---|---|
PROPID_ACC_NAME | VT_BSTR |
PROPID_ACC_DESCRIPTION | VT_BSTR |
PROPID_ACC_ROLE | VT_I4 |
PROPID_ACC_STATE | VT_I4 |
PROPID_ACC_HELP | VT_BSTR |
PROPID_ACC_KEYBOARDSHORTCUT | VT_BSTR |
PROPID_ACC_DEFAULTACTION | VT_BSTR |
PROPID_ACC_VALUEMAP | VT_BSTR |
PROPID_ACC_ROLEMAP | VT_BSTR |
PROPID_ACC_STATEMAP | VT_BSTR |
PROPID_ACC_FOCUS | VT_DISPATCH VT_I4 |
PROPID_ACC_SELECTION | VT_DISPATCH VT_I4 VT_UNKNOWN |
PROPID_ACC_PARENT | VT_DISPATCH |
PROPID_ACC_NAV_UP | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_DOWN | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_LEFT | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_RIGHT | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_PREV | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_NEXT | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_FIRSTCHILD | VT_DISPATCH VT_I4 |
PROPID_ACC_NAV_LASTCHILD | VT_DISPATCH VT_I4 |