Exposition dOwner-Drawn éléments de zone de liste modifiable

Les développeurs d’applications n’ont pas besoin d’implémenter IAccessible pour exposer les éléments dans une zone de liste déroulante dessinée par le propriétaire qui a le style CBS_HASSTRINGS , car Microsoft Active Accessibility expose les éléments dans des zones de liste déroulante avec ce style. Les éléments d’une zone de liste déroulante dessinée par le propriétaire avec le style CBS_HASSTRINGS sont affichés sous forme de texte. Toutefois, ce style est également utilisé avec les zones de liste déroulante dessinées par le propriétaire qui n’affichent pas de texte afin que les éléments de zone de liste modifiable soient exposés par Microsoft Active Accessibility.

Pour autoriser Microsoft Active Accessibility à exposer les éléments dans une zone de liste déroulante dessinée par le propriétaire qui n’affiche pas de texte :

  • Utilisez le style CBS_HASSTRINGS lors de la création de la zone de liste déroulante.
  • Créez un équivalent textuel qui nomme ou décrit chaque élément de la zone de liste déroulante.
  • Lorsque vous ajoutez des éléments à la zone de liste déroulante dessinée par le propriétaire, utilisez le message CB_ADDSTRING pour ajouter le texte que vous souhaitez exposer par Microsoft Active Accessibility. Ce texte n’étant pas affiché, il ne doit pas faire partie des données dessinées par le propriétaire. Ajoutez les données d’élément dessinées par le propriétaire à l’aide du message CB_SETITEMDATA.

Lorsque vous utilisez la méthode ci-dessus, notez ce qui suit :

  • Si vous utilisez le style CBS_SORT , la zone de liste modifiable est triée à l’aide des chaînes fournies et non de la procédure de rappel WM_COMPAREITEM .
  • Avec les zones de liste déroulante de variables dessinées par le propriétaire créées avec le style CBS_OWNERDRAWVARIABLE, utilisez une variable globale ou un autre mécanisme pour suivre le moment où le membre itemData du MEASUREITEMSTRUCT est valide. La variable globale est requise, car le système envoie le message WM_MEASUREITEM dès que la chaîne est ajoutée, mais avant que les données d’élément ne sont attachées, et à ce stade, le membre itemData n’est pas valide.
  • Pour modifier la chaîne d’un élément dans une zone de liste déroulante avec le style CBS_HASSTRINGS , supprimez l’élément avec le message CB_DELETESTRING et ajoutez la nouvelle chaîne avec le message CB_ADDSTRING .