Expondo itens da caixa de combinação Owner-Drawn

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

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

  • Use o estilo CBS_HASSTRINGS ao criar a caixa de combinação.
  • Crie uma contraparte textual que nomeia ou descreva cada item na caixa de combinação.
  • Ao adicionar itens à caixa de combinação desenhada pelo proprietário, use a mensagem CB_ADDSTRING para adicionar o texto que você deseja que a Acessibilidade Ativa da Microsoft exponha. Esse texto não é exibido, portanto, não deve fazer parte dos dados desenhados pelo proprietário. Adicione os dados de item desenhados pelo proprietário usando a mensagem CB_SETITEMDATA.

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

  • Se você usar o estilo CBS_SORT , a caixa de combinação será classificada usando as cadeias de caracteres fornecidas e não o WM_COMPAREITEM procedimento de retorno de chamada.
  • Com caixas de combinação de variáveis desenhadas pelo proprietário criadas com o estilo CBS_OWNERDRAWVARIABLE, use uma variável global ou algum outro mecanismo para controlar quando o membro itemData do MEASUREITEMSTRUCT é 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 combinação com o estilo CBS_HASSTRINGS , exclua o item com a mensagem CB_DELETESTRING e adicione a nova cadeia de caracteres com a mensagem CB_ADDSTRING .