Exponer elementos de cuadro combinado de Owner-Drawn

Los desarrolladores de aplicaciones no necesitan implementar IAccessible para exponer los elementos en un cuadro combinado dibujado por el propietario que tenga el estilo CBS_HASSTRINGS porque Microsoft Active Accessibility expone los elementos en cuadros combinados con este estilo. Los elementos de un cuadro combinado dibujado por el propietario con el estilo CBS_HASSTRINGS se muestran como texto. Sin embargo, este estilo también se usa con cuadros combinados dibujados por el propietario que no muestran texto para que microsoft Active Accessibility exponga los elementos del cuadro combinado.

Para permitir que la accesibilidad activa de Microsoft exponga los elementos en un cuadro combinado dibujado por el propietario que no muestre texto:

  • Use el estilo CBS_HASSTRINGS al crear el cuadro combinado.
  • Cree un homólogo textual que designe o describa cada elemento del cuadro combinado.
  • Al agregar elementos al cuadro combinado dibujado por el propietario, use el mensaje CB_ADDSTRING para agregar el texto que desea que se exponga la accesibilidad activa de Microsoft. Este texto no se muestra, por lo que no debe formar parte de los datos dibujados por el propietario. Agregue los datos del elemento dibujado por el propietario mediante el mensaje CB_SETITEMDATA.

Al usar el método anterior, tenga en cuenta lo siguiente:

  • Si usa el estilo CBS_SORT , el cuadro combinado se ordena con las cadenas proporcionadas y no con el procedimiento de devolución de llamada WM_COMPAREITEM .
  • Con cuadros combinados de variables dibujadas por el propietario creados con el estilo CBS_OWNERDRAWVARIABLE, use una variable global o algún otro mecanismo para realizar un seguimiento de cuándo el miembro itemData del MEASUREITEMSTRUCT es válido. La variable global es necesaria porque el sistema envía el mensaje de WM_MEASUREITEM tan pronto como se agrega la cadena, pero antes de adjuntar los datos del elemento y, en este momento, el miembro itemData no es válido.
  • Para cambiar la cadena de un elemento en un cuadro combinado con el estilo CBS_HASSTRINGS , elimine el elemento con el mensaje CB_DELETESTRING y agregue la nueva cadena con el mensaje CB_ADDSTRING .