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.