Usar anotación de mapa de valores
Para crear una asignación de valores
Cree una cadena de asignación.
Una cadena de asignación es una lista de los valores numéricos de un control correspondientes a una cadena legible en Unicode. Comienza con "A:" seguido de un número que indica el tipo de índice utilizado. Solo se admiten índices de imagen; por lo tanto, el tipo de índice siempre es 0.
La cadena va seguida de pares :index:result. El "índice" es un número que representa un índice de imagen para un List-View o vista de árbol, o el valor de un control deslizante.
El valor resultante es un número obtenido al asignar la propiedad Role o State para un control de vista de lista o vista de árbol. Estos números se expresan en decimal o hexadecimal con un prefijo "0x".
La cadena de asignación siempre finaliza con dos puntos finales (":").
A continuación se muestra un ejemplo de una asignación de anotaciones para las propiedades State y Role de una casilla en una vista de lista o un control de vista de árbol. Hay dos elementos en la vista que representan casillas y cada una tiene imágenes correspondientes al estado activado y desactivado.
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":";
Para conocer los valores válidos de rol y estado, vea Roles de objeto y constantes de estado de objeto.
El valor de índice puede ser negativo al asignar propiedades para un control deslizante.
Al asignar una propiedad Value o Description, el resultado es una cadena. Las cadenas no están entre comillas y los dos puntos actúan como delimitadores.
Para obtener más información, vea Formato de asignación de anotaciones.
Cree el administrador de anotaciones y obtenga un puntero a su interfaz IAccPropServices.
A continuación se muestra un ejemplo de cómo crear el administrador de anotaciones.
IAccPropServices * pAccPropSvc = NULL; HRESULT hr = CoCreateInstance(CLSID_AccPropServices, NULL, CLSCTX_SERVER, IID_IAccPropServices, (void**) & pAccPropSvc));
Adjunte la cadena de asignación al control .
Llame a IAccPropServices::SetHwndPropStr, pasando el HWND del control y un puntero a la cadena de asignación.
El parámetro IdProp será uno de los siguientes.
Parámetro Se usa para MSAAPROPID_ROLEMAP Para establecer un mapa de roles para los controles de vista de lista o vista de árbol. MSAAPROPID_STATEMAP Para establecer un mapa de estado para los controles de vista de lista o vista de árbol. PROPID_ACC_DESCRIPTIONMAP Para establecer un mapa de descripción para vistas de lista o vistas de árbol. MSAAPROPID_VALUEMAP Para establecer un mapa de valores en los controles deslizantes. Limpie.
Antes de destruir cualquier control anotado de mapa de valores (por ejemplo, al controlar WM_DESTROY), debe borrar las propiedades registradas previamente y liberar el administrador de anotaciones.
Para ello, llame a IAccPropServices::ClearHwndProps según corresponda y suelte el puntero a IAccPropServices.
Para obtener código de ejemplo, vea Ejemplo de anotación de mapa de valores.