Uso dell'annotazione diretta
Per utilizzare l'annotazione diretta per sovrascrivere il valore di una proprietà
- Utilizzare la funzione CoCreateInstance o CoCreateInstanceEx per creare l'oggetto IAccPropServices.
- Chiamare IAccPropServices::SetHwndProp, passando il HWND, l'ID oggetto, l'ID figlio, la proprietà da sottoporre a override e un VARIANT contenente il nuovo valore della proprietà. Questo passaggio annota il valore.
- Rilasciare i puntatori di interfaccia e liberare memoria.
Nell'esempio seguente viene illustrato come annotare la proprietà Role di un controllo testo statico.
HRESULT CMyTextControl::SetAccessibleProperties()
{
// COM is assumed to be initialized...
IAccPropServices* pAccPropServices = NULL;
HRESULT hr = CoCreateInstance(CLSID_AccPropServices,
NULL, CLSCTX_SERVER, IID_IAccPropServices,
(void**)&pAccPropServices);
if (SUCCEEDED(hr))
{
// Annotating the Role of this object to be STATICTEXT
VARIANT var;
var.vt = VT_I4;
var.lVal = ROLE_SYSTEM_STATICTEXT;
hr = pAccPropServices->SetHwndProp(_hwnd,
OBJID_CLIENT,
CHILDID_SELF,
PROPID_ACC_ROLE,
var);
pAccPropServices->Release();
}
return hr;
}
Proprietà supportate quando si specifica un valore
Quando si specifica un valore (dove il valore deve essere del tipo annotato) per l'annotazione diretta, è possibile annotare le proprietà di accessibilità Microsoft Active Accessibility seguenti. Per eseguire l'override o aggiungere una proprietà di UI Automation Microsoft a un controllo, è possibile specificare l'ID proprietà UI Automation anziché l'ID proprietà Microsoft Active Accessibility. Per un elenco degli ID di Automation UI, vedere Identificatori di proprietà .
Proprietà | Digitare |
---|---|
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 (scorciatoia da tastiera) | VT_BSTR |
PROPID_ACC_DEFAULTACTION | VT_BSTR |
PROPID_ACC_VALUEMAP | VT_BSTR |
PROPID_ACC_ROLEMAP | VT_BSTR |
PROPID_ACC_STATEMAP | VT_BSTR |