Compartilhar via


Expondo itens de caixa de listagem Owner-Drawn

Os desenvolvedores de aplicativos não precisam implementar o IAccessible para expor os itens em uma caixa de listagem desenhada pelo proprietário que tenha o estilo LBS_HASSTRINGS porque a Acessibilidade Ativa da Microsoft expõe os itens em caixas de listagem com esse estilo. Os itens em uma caixa de listagem desenhada pelo proprietário com o estilo LBS_HASSTRINGS são exibidos como texto. No entanto, esse estilo também é usado com caixas de listagem desenhadas pelo proprietário que não exibem texto para que os itens da caixa de listagem sejam expostos pela Acessibilidade Ativa da Microsoft.

Para permitir que a Acessibilidade Ativa da Microsoft exponha os itens em uma caixa de listagem desenhada pelo proprietário que não exibe texto:

  • Use o estilo LBS_HASSTRINGS ao criar a caixa de listagem.
  • Crie um equivalente textual que nomeia ou descreva cada item na caixa de listagem.
  • Ao adicionar itens à caixa de listagem desenhada pelo proprietário, use a mensagem LB_ADDSTRING para adicionar o texto que você deseja que a Acessibilidade Ativa da Microsoft exponha. Esse texto não é exibido, portanto, não faz parte dos dados desenhados pelo proprietário. Adicione os dados de item desenhados pelo proprietário usando a mensagem LB_SETITEMDATA .

Ao usar o método acima, observe o seguinte:

  • Se você usar o estilo LBS_SORT , a caixa de listagem será classificada usando as cadeias de caracteres fornecidas e não o procedimento de retorno de chamada WM_COMPAREITEM .
  • Com caixas de listagem de variáveis desenhadas pelo proprietário criadas com o estilo LBS_OWNERDRAWVARIABLE, use uma variável global ou algum outro mecanismo para controlar quando o membro itemData do MEASUREITEMSTRUCT for válido. A variável global é necessária porque o sistema envia a mensagem WM_MEASUREITEM assim que a cadeia de caracteres é adicionada, mas antes que os dados do item sejam anexados e, neste ponto, o membro itemData não é válido.
  • Para alterar a cadeia de caracteres de um item em uma caixa de listagem com o estilo LBS_HASSTRINGS , exclua o item com a mensagem LB_DELETESTRING e adicione a nova cadeia de caracteres com a mensagem LB_ADDSTRING.