次の方法で共有


値マップ注釈の使用

値マップを作成するには

  1. マッピング文字列を作成します。

    マッピング文字列は、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 プロパティをマップすると、結果は文字列になります。 文字列は引用符で囲まれていないので、コロンは区切り記号として機能します。

    詳細については、「 注釈マップの形式」を参照してください。

  2. 注釈マネージャーを作成し、そのIAccPropServices インターフェイスへのポインターを取得します。

    注釈マネージャーを作成する方法の例を次に示します。

    IAccPropServices * pAccPropSvc = NULL;
    HRESULT hr = CoCreateInstance(CLSID_AccPropServices, NULL,
    CLSCTX_SERVER, IID_IAccPropServices, (void**) & pAccPropSvc));
    
    
  3. マッピング文字列をコントロールにアタッチします。

    IAccPropServices::SetHwndPropStr を呼び出し、コントロールの HWND とマッピング文字列へのポインターを渡します。

    IdProp パラメーターは、次のいずれかになります。

    パラメーター 使用目的
    MSAAPROPID_ROLEMAP リスト ビューまたはツリー ビュー コントロールのロール マップを設定するには。
    MSAAPROPID_STATEMAP リスト ビューまたはツリー ビュー コントロールの状態マップを設定するには。
    PROPID_ACC_DESCRIPTIONMAP リスト ビューまたはツリー ビューの説明マップを設定します。
    MSAAPROPID_VALUEMAP スライダー コントロールに値マップを設定するには。

     

  4. クリーンアップします。

    値マップの注釈付きコントロール ( たとえば、WM_DESTROYを処理する場合) を破棄する前に、以前に登録したプロパティをクリアし、注釈マネージャーを解放する必要があります。

    これを行うには、必要 に応じて IAccPropServices::ClearHwndProps を呼び出し、 IAccPropServices へのポインターを解放します。

サンプル コードについては、「 値マップ注釈のサンプル」を参照してください。