直接注釈の使用

直接注釈を使用してプロパティの値をオーバーライドするには

  1. CoCreateInstance または CoCreateInstanceEx 関数を使用して、IAccPropServices オブジェクトを作成します。
  2. IAccPropServices::SetHwndProp を呼び出し、HWND、オブジェクト ID、子 ID、オーバーライドされるプロパティ、およびプロパティの新しい値を含む VARIANT を渡します。 この手順では、値に注釈を付けます。
  3. インターフェイス ポインターと空きメモリを解放します。

次の例は、静的テキスト コントロールの Role プロパティに注釈を付ける方法を示しています。

HRESULT CMyTextControl::SetAccessibleProperties()
{
  // COM is assumed to be initialized...
  IAccPropServices* pAccPropServices = NULL;

  HRESULT hr = CoCreateInstance(CLSID_AccPropServices,
    NULL, CLSCTX_SERVER, IID_IAccPropServices, 
    (void**)&pAccPropServices);

  if (SUCCEEDED(hr))
  {
    // Annotating the Role of this object to be STATICTEXT
    VARIANT var;
    var.vt = VT_I4;
    var.lVal = ROLE_SYSTEM_STATICTEXT;

    hr = pAccPropServices->SetHwndProp(_hwnd,
      OBJID_CLIENT,
      CHILDID_SELF,
      PROPID_ACC_ROLE,
      var);

    pAccPropServices->Release();
  }
  return hr;
}

値を指定するときにサポートされるプロパティ

次の Microsoft Active Accessibility プロパティは、直接注釈の値 (値がメモされた型である必要がある場合) を指定するときに注釈を付けることができます。 コントロールに Microsoft UI オートメーション プロパティをオーバーライドまたは追加するには、Microsoft Active Accessibility プロパティ ID ではなく、UI オートメーション プロパティ ID を指定します。 UI オートメーション ID の一覧については、「プロパティ識別子」を参照してください。

プロパティ Type
PROPID_ACC_NAME VT_BSTR
PROPID_ACC_DESCRIPTION VT_BSTR
PROPID_ACC_ROLE VT_I4
PROPID_ACC_STATE VT_I4
PROPID_ACC_HELP VT_BSTR
PROPID_ACC_KEYBOARDSHORTCUT VT_BSTR
PROPID_ACC_DEFAULTACTION VT_BSTR
PROPID_ACC_VALUEMAP VT_BSTR
PROPID_ACC_ROLEMAP VT_BSTR
PROPID_ACC_STATEMAP VT_BSTR