Usando anotação de servidor

Este tópico fornece informações sobre como usar a anotação de servidor para especificar um objeto de retorno de chamada.

Para substituir uma propriedade que especifica um objeto de retorno de chamada

  1. Obtenha um ponteiro de interface IAccessible para o elemento acessível que deve ser anotado.
  2. Chame QueryInterface no elemento acessível para obter um ponteiro de interface IAccIdentity .
  3. Chame IAccIdentity::GetIdentityString() no ponteiro da interface IAccIdentity para obter uma cadeia de caracteres que identifica exclusivamente o elemento acessível que deve ser anotado.
  4. Use CoCreateInstance ou CoCreateInstanceEx para criar o objeto IAccPropServices .
  5. Crie um objeto COM (Component Object Model) que implemente IAccPropServer.
  6. Chame IAccPropServices::SetPropServer, passando a cadeia de caracteres de identidade, um GUID indicando a propriedade a ser substituída e um ponteiro para o objeto de retorno de chamada IAccPropServer .
  7. Liberar ponteiros de interface e memória livre.

Quando um cliente solicita a propriedade do elemento acessível, o objeto de retorno de chamada será chamado e retornará o valor para o cliente.

Como ao especificar um valor, os desenvolvedores de servidor podem, como alternativa, usar o método IAccPropServices::ComposeHwndIdentityString para obter uma cadeia de caracteres de identidade; ou eles podem usar o método IAccPropServices::SetHwndPropServer e especificar os parâmetros hwnd, idObject ou idChild em vez de uma cadeia de caracteres de identidade.

Ao usar SetPropServer ou SetHwndPropServer em um objeto de contêiner, os desenvolvedores de servidores podem, opcionalmente, especificar que as informações de substituição também devem ser aplicadas a todos os filhos do elemento desse contêiner.

Os servidores podem limpar explicitamente a anotação a qualquer momento usando IAccPropServices::ClearProps. Isso geralmente não é necessário, pois o serviço de anotação limpo automaticamente e libera informações de anotação quando o elemento acessível que está sendo anotado desaparece.

Veja abaixo uma lista de propriedades que podem ser anotadas usando este procedimento.

Propriedades com suporte ao especificar um retorno de chamada

Ao especificar um retorno de chamada, as propriedades a seguir podem ser anotadas. Atualmente, essas propriedades não podem ser anotadas diretamente especificando um valor.

Propriedade 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