Поделиться через


Использование заметки карты значений

Создание карты значений

  1. Создайте строку сопоставления.

    Строка сопоставления — это список числовых значений элемента управления, соответствующих удобочитаемой строке в Юникоде. Он начинается с "A:", за которым следует число, указывающее тип используемого индекса. Поддерживаются только индексы изображений; Поэтому тип индекса всегда равен 0.

    За строкой следуют пары :index:result. Индекс — это число, представляющее индекс изображения для List-View или представления в виде дерева или значение для элемента управления ползунок.

    Результирующее значение — это число, полученное при сопоставлении свойства Role или State для элемента управления представлением списка или дерева. Такие числа выражаются в десятичном или шестнадцатеричном формате с префиксом "0x".

    Строка сопоставления всегда завершается последним двоеточием (":").

    Ниже приведен пример карты заметок для свойств State и Role поля проверка в представлении списка или в виде дерева. В представлении есть два элемента, которые представляют проверка поля, и каждый из них содержит изображения, соответствующие состоянию установлен и не установлен.

    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":";
    

    Допустимые значения ролей и состояний см. в разделе Роли объекта и константы состояния объекта.

    Значение индекса может быть отрицательным при сопоставлении свойств для элемента управления ползунок.

    При сопоставлении свойства 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.

Пример кода см. в разделе Пример заметки карты значений.