Esposizione di elementi casella combinata Owner-Drawn

Gli sviluppatori di applicazioni non devono implementare IAccessible per esporre gli elementi in una casella combinata disegnata dal proprietario con lo stile CBS_HASSTRINGS perché Microsoft Active Accessibility espone gli elementi nelle caselle combinate con questo stile. Gli elementi in una casella combinata disegnata dal proprietario con lo stile CBS_HASSTRINGS vengono visualizzati come testo. Tuttavia, questo stile viene usato anche con caselle combinate disegnate dal proprietario che non visualizzano testo in modo che gli elementi della casella combinata vengano esposti da Microsoft Active Accessibility.

Per consentire a Microsoft Active Accessibility di esporre gli elementi in una casella combinata disegnata dal proprietario che non visualizza il testo:

  • Utilizzare lo stile CBS_HASSTRINGS durante la creazione della casella combinata.
  • Creare una controparte testuale che denomina o descrive ogni elemento nella casella combinata.
  • Quando si aggiungono elementi alla casella combinata disegnata dal proprietario, usare il messaggio CB_ADDSTRING per aggiungere il testo che si desidera esporre da Microsoft Active Accessibility. Questo testo non viene visualizzato, quindi non deve far parte dei dati disegnati dal proprietario. Aggiungere i dati degli elementi creati dal proprietario usando il messaggio CB_SETITEMDATA.

Quando si usa il metodo precedente, tenere presente quanto segue:

  • Se si utilizza lo stile di CBS_SORT , la casella combinata viene ordinata utilizzando le stringhe fornite e non la routine di callback WM_COMPAREITEM .
  • Con le caselle combinate delle variabili disegnate dal proprietario create con lo stile CBS_OWNERDRAWVARIABLE, usare una variabile globale o un altro meccanismo per tenere traccia di quando il membro itemData di MEASUREITEMSTRUCT è valido. La variabile globale è necessaria perché il sistema invia il messaggio di WM_MEASUREITEM non appena viene aggiunta la stringa, ma prima che i dati dell'elemento siano associati e a questo punto il membro itemData non è valido.
  • Per modificare la stringa per un elemento in una casella combinata con lo stile CBS_HASSTRINGS , eliminare l'elemento con il messaggio CB_DELETESTRING e aggiungere la nuova stringa con il messaggio CB_ADDSTRING .