値マップ注釈の使用
値マップを作成するには
マッピング文字列を作成します。
マッピング文字列は、Unicode の人間が判読できる文字列に対応するコントロールの数値のリストです。 "A:" の後に、使用されるインデックスの種類を示す数値が続きます。 イメージ インデックスのみがサポートされています。そのため、インデックスの種類は常に 0 です。
文字列の後に :index:result ペアが続きます。 "index" は、List-Viewまたはツリー ビューのイメージ インデックス、またはスライダー コントロールの値を表す数値です。
結果の値は、リスト ビューまたはツリー ビュー コントロールの Role プロパティまたは State プロパティをマップするときに取得される数値です。 このような数値は、"0x" プレフィックスを持つ 10 進数または 16 進数で表されます。
マッピング文字列は常に最後のコロン (":") で終了します。
リスト ビューまたはツリー ビュー コントロールのチェック ボックスの State プロパティと Role プロパティの注釈マップの例を次に示します。 ビューには、チェック ボックスを表す 2 つの項目があり、それぞれにチェックとオフの状態に対応する画像があります。
LPCWSTR g_ListOrTreeStateMap = L"A:0" // Index type; always 0. ! L":0:0x00" // Image 0 is normal ! L":1:0x10" // Image 1 is checked - STATE_SYSTEM_CHECKED (0x10) ! L":"; LPCWSTR g_ListOrTreeRoleMap = L"A:0" // Index type; always 0. ! L":0:0x2C" // Image 0 is a check box - ROLE_SYSTEM_CHECKBUTTON (0x2c) ! L":1:0x2C" // image 1 is also a check box ! L":";
有効な Role と State の値については、「 オブジェクト ロール 」および「 オブジェクトの状態定数」を参照してください。
スライダー コントロールのプロパティをマップすると、インデックス値が負になる場合があります。
Value プロパティまたは Description プロパティをマップすると、結果は文字列になります。 文字列は引用符で囲まれていないので、コロンは区切り記号として機能します。
詳細については、「 注釈マップの形式」を参照してください。
注釈マネージャーを作成し、そのIAccPropServices インターフェイスへのポインターを取得します。
注釈マネージャーを作成する方法の例を次に示します。
IAccPropServices * pAccPropSvc = NULL; HRESULT hr = CoCreateInstance(CLSID_AccPropServices, NULL, CLSCTX_SERVER, IID_IAccPropServices, (void**) & pAccPropSvc));
マッピング文字列をコントロールにアタッチします。
IAccPropServices::SetHwndPropStr を呼び出し、コントロールの HWND とマッピング文字列へのポインターを渡します。
IdProp パラメーターは、次のいずれかになります。
パラメーター 使用目的 MSAAPROPID_ROLEMAP リスト ビューまたはツリー ビュー コントロールのロール マップを設定するには。 MSAAPROPID_STATEMAP リスト ビューまたはツリー ビュー コントロールの状態マップを設定するには。 PROPID_ACC_DESCRIPTIONMAP リスト ビューまたはツリー ビューの説明マップを設定します。 MSAAPROPID_VALUEMAP スライダー コントロールに値マップを設定するには。 クリーンアップします。
値マップの注釈付きコントロール ( たとえば、WM_DESTROYを処理する場合) を破棄する前に、以前に登録したプロパティをクリアし、注釈マネージャーを解放する必要があります。
これを行うには、必要 に応じて IAccPropServices::ClearHwndProps を呼び出し、 IAccPropServices へのポインターを解放します。
サンプル コードについては、「 値マップ注釈のサンプル」を参照してください。