使用直接注释

使用直接注释替代属性的值

  1. 使用 CoCreateInstanceCoCreateInstanceEx 函数创建 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 自动化 属性,可以指定 UI 自动化 属性 ID,而不是 Microsoft Active Accessibility 属性 ID。 有关UI 自动化 ID 的列表,请参阅属性标识符

属性 类型
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