コンボ ボックス項目Owner-Drawn公開する

Microsoft Active Accessibility では、このスタイルのコンボ ボックス内のアイテムが公開されるため、アプリケーション開発者は、スタイルがCBS_HASSTRINGS所有者描画コンボ ボックス内の項目を公開するために IAccessible を実装する必要はありません。 CBS_HASSTRINGS スタイルの所有者描画コンボ ボックス内の項目がテキストとして表示されます。 ただし、このスタイルは、Microsoft Active Accessibility によってコンボ ボックス項目が公開されるように、テキストを表示しない所有者が描画したコンボ ボックスでも使用されます。

Microsoft Active Accessibility で、テキストを表示しない所有者が描画したコンボ ボックス内の項目を公開できるようにするには:

  • コンボ ボックスを作成するときは、 CBS_HASSTRINGS スタイルを使用します。
  • コンボ ボックス内の各項目の名前または説明に対応するテキストを作成します。
  • 所有者描画コンボ ボックスに項目を追加する場合は、CB_ADDSTRING メッセージを使用して、Microsoft Active Accessibility で公開するテキストを追加します。 このテキストは表示されないため、所有者が描画したデータの一部にすることはできません。 CB_SETITEMDATA メッセージを使用して、所有者が描画したアイテム データを追加します。

上記のメソッドを使用する場合は、次の点に注意してください。

  • CBS_SORT スタイルを使用する場合、コンボ ボックスは、WM_COMPAREITEMコールバック プロシージャではなく、指定された文字列を使用して並べ替えられます。
  • スタイル CBS_OWNERDRAWVARIABLEで作成された所有者描画変数コンボ ボックスでは、グローバル変数またはその他のメカニズムを使用して、MEASUREITEMSTRUCTitemData メンバーが有効かどうかを追跡します。 グローバル変数は、文字列が追加されるとすぐに WM_MEASUREITEM メッセージを送信しますが、項目データがアタッチされる前に、この時点で itemData メンバーが無効になるため、グローバル変数が必要です。
  • CBS_HASSTRINGS スタイルのコンボ ボックス内のアイテムの文字列を変更するには、CB_DELETESTRING メッセージを含むアイテムを削除し、CB_ADDSTRING メッセージを含む新しい文字列を追加します。