Value Map Annotation Sample
Cut, paste, and modify the following code sample for your own use. Follow instructions in comments marked with /* TODO */.
/* TODO
* Delete / modify these sample mapping strings as
* appropriate.
* See <oleacc.h> for the possible states and roles, and
* their numeric values.
*/
LPCWSTR g_ListOrTreeStateMap =
L"A:0" // 0 -> use regular image, 1 -> use state image, 2-> use overlay image.
L":0:0x00" // image 0 is normal
L":1:0x10" // image 1 is checked - STATE_SYSTEM_CHECKED
L":";
LPCWSTR g_ListOrTreeRoleMap =
L"A:0" // 0 -> use regular image, 1 -> use state image, 2-> use overlay image.
L":0:0x2C" // image 0 is check box - ROLE_SYSTEM_CHECKBUTTON (ie. check box)
L":1:0x2C" // image 1 is also check box
L":";
// This is an example for a slider that has 5 positions,
// ranging from Cold (0) to Hot (5).
// Note - because this contains textual strings, the entire
// string should be loaded from a localized resource, or
// it should be built at run time from localized strings.
// This non-localization-friendly string is used here for
// illustrative purposes only.
LPCWSTR g_SliderValueMap =
L"A:0" // always 0 for slider maps
L":0:Cold"
L":1:Cool"
L":2:Warm"
L":3:Toasty"
L":4:Hot"
L":";
[ ... ]
//
// Skeleton code to set property map for a control
//
// Do this after shortly after the corresponding control is
// created (for example, when handling WM_INITDIALOG)
//
// Assumptions:
// hwndListOrTree is the HWND of a listview or
// treeview(listview, treeview),
// hwndSlider is the HWND of a slider.
//
IAccPropServices * pAccPropSvc = NULL;
HRESULT hr;
hr = CoCreateInstance( CLSID_AccPropServices, NULL,
CLSCTX_SERVER, IID_IAccPropServices, (void **) & pAccPropSvc )
);
if( hr == S_OK && pAccPropSvc )
{
/* TODO
* For a listview or treeview, both role and state
* maps are typically set here.
* For sliders, only the value map is set.
* Delete / modify as appropriate.
*
*/
pAccPropSvc->SetHwndPropStr( hwndListOrTree,
OBJID_CLIENT, 0, PROPID_ACC_ROLEMAP, g_ListOrTreeRoleMap ) );
pAccPropSvc->SetHwndPropStr( hwndListOrTree,
OBJID_CLIENT, 0, PROPID_ACC_STATEMAP, g_ListOrTreeStateMap ) );
pAccPropSvc->SetHwndPropStr( hwndSlider, OBJID_CLIENT,
0, PROPID_ACC_VALUEMAP, g_SliderValueMap );
pAccPropSvc->Release();
}