This documentation is archived and is not being maintained.


Maps the index of an item in the current list-view control to a unique ID.

UINT MapIndexToID(
     UINT index
) const;



[in] index

The zero-based index of an item.

A unique ID for the specified item.

A list-view control internally tracks items by index. This can present problems because indexes can change during the control's lifetime. The list-view control can tag an item with an ID when the item is created. You can use this ID to access a specific item for the lifetime of the list-view control.

Note that in a multithreaded environment the index is guaranteed only on the thread that hosts the list-view control, not on background threads.

This method sends the LVM_MAPINDEXTOID message, which is described in the Windows SDK.

Header: afxcmn.h

This control is supported in Windows Vista and later.

Additional requirements for this method are described in Build Requirements for Windows Vista Common Controls.

The following code example defines a variable, m_listCtrl, that is used to access the current list-view control. This variable is used in the next example.

	// Variable used to access the list control.
	CListCtrl m_listCtrl; 

The following code example demonstrates the MapIndexToID method. In an earlier section of this code example, we created a list-view control that displays two columns titled "ClientID" and "Grade" in a report view. The following example maps the index of each list-view item to an identification number, and then retrieves the index for each identification number. Finally, the example reports whether the original indexes were retrieved.

	// MapIndexToID 
	int iCount = m_listCtrl.GetItemCount();
	UINT nId = 0;
	UINT nIndex = 0;
	for (int iIndexOriginal = 0; iIndexOriginal < iCount; iIndexOriginal++)
		// Map index to ID.
		nId = m_listCtrl.MapIndexToID((UINT)iIndexOriginal);

		// Map ID to index.
		nIndex = m_listCtrl.MapIDToIndex(nId);

		if (nIndex != (UINT)(iIndexOriginal))
			CString str;
			str.Format(_T("Mapped index (%d) is not equal to original index (%d)"),
				nIndex, (UINT)(iIndexOriginal));
	AfxMessageBox(_T("The mapped indexes and original indexes are equal."),