Share via


Utilisation de l’annotation directe

Pour utiliser une annotation directe pour remplacer la valeur d’une propriété

  1. Utilisez la fonction CoCreateInstance ou CoCreateInstanceEx pour créer l’objet IAccPropServices .
  2. Appelez IAccPropServices::SetHwndProp en passant le HWND, l’ID d’objet, l’ID enfant, la propriété à remplacer et un VARIANT contenant la nouvelle valeur de la propriété. Cette étape annote la valeur.
  3. Libérez les pointeurs d’interface et libérez de la mémoire.

L’exemple suivant montre comment annoter la propriété Role d’un contrôle de texte statique.

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;
}

Propriétés prises en charge lors de la spécification d’une valeur

Les propriétés Microsoft Active Accessibility suivantes peuvent être annotées lors de la spécification d’une valeur (où la valeur doit être du type noté) pour l’annotation directe. Pour remplacer ou ajouter une propriété Microsoft UI Automation à un contrôle, vous pouvez spécifier l’ID de propriété UI Automation au lieu de l’ID de propriété Microsoft Active Accessibility. Pour obtenir la liste des ID de UI Automation, consultez Identificateurs de propriétés.

Propriété 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