Usando a anotação direta

Para usar a anotação direta para substituir o valor de uma propriedade

  1. Use a função CoCreateInstance ou CoCreateInstanceEx para criar o objeto IAccPropServices .
  2. Chame IAccPropServices::SetHwndProp, passando o HWND, a ID do objeto, a ID filho, a propriedade a ser substituída e uma VARIANT que contém o novo valor da propriedade. Esta etapa anota o valor.
  3. Libere os ponteiros da interface e a memória livre.

O exemplo a seguir mostra como anotar a propriedade Role de um controle de texto estático.

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;
}

Propriedades com suporte ao especificar um valor

As propriedades de Acessibilidade Ativa da Microsoft a seguir podem ser anotadas ao especificar um valor (em que o valor deve ser do tipo indicado) para anotação direta. Para substituir ou adicionar uma propriedade do Microsoft Automação da Interface do Usuário a um controle, você pode especificar a ID da propriedade Automação da Interface do Usuário em vez da ID da propriedade Microsoft Active Accessibility. Para obter uma lista de IDs de Automação da Interface do Usuário, consulte Identificadores de propriedade.

Propriedade Tipo
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