Visualizzazione degli elementi della combo box 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 siano 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 testo:
- Usare 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, pertanto non deve far parte dei dati gestiti dall'utente. Aggiungere i dati degli elementi disegnati dal proprietario usando il messaggio di 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 di variabili disegnate dal proprietario create con lo stile CBS_OWNERDRAWVARIABLE, usare una variabile globale o un altro meccanismo per tenere traccia di quando il itemData membro del MEASUREITEMSTRUCT è valido. La variabile globale è obbligatoria perché il sistema invia il messaggio di WM_MEASUREITEM non appena viene aggiunta la stringa, ma prima che i dati dell'elemento vengano allegati e a questo punto il membro itemData non è valido.
- Per modificare la stringa di 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.