CListCtrl::MapIndexToID
Сопоставляет индекс элемента в текущем элементе управления "список" с уникальным идентификатором.
UINT MapIndexToID(
UINT index
) const;
Параметры
Параметр |
Описание |
---|---|
[входящий] index |
Индекс, начинающийся с нуля элемента. |
Возвращаемое значение
Уникальный идентификатор для указанного элемента.
Заметки
Элемент управления "список" внутренне отслеживает элементы индексу. Это может привести к проблемам, поскольку индексы могут изменяться во время существования элемента управления. Элемент управления "список" может маркировки элемент с идентификатором, когда элемент создан. Можно использовать этот идентификатор для доступа к определенному элементу в течение времени существования управления "список".
Обратите внимание, что в многопоточной среде индекс гарантируется только в потоке, размещение элементе управления списка, а не на фоне потоке.
Этот метод отправляет сообщение LVM_MAPINDEXTOID, которое описано в Windows SDK.
Требования
заголовок: afxcmn.h
Этот элемент управления поддерживается в Windows Vista и более поздних версиях.
Дополнительные требования для этого метода см. в Требования к сборке для использования стандартных элементов управления в Windows Vista.
Пример
В следующем примере кода определяется переменной m_listCtrl, которая используется для доступа к текущий элемент управления "список". Эта переменная используется в следующем примере.
public:
// Variable used to access the list control.
CListCtrl m_listCtrl;
В следующем примере кода демонстрируется применение метода MapIndexToID. В предыдущем шаге этого примера кода, мы создали элементе управления списка, выводится 2 столбцов озаглавили "ClientID" и "ранг" в представлении отчета. Следующий пример сопоставляет индекс каждого элемента списка в идентификационному номеру, а затем извлекает индекс для каждого номера идентификатора. Наконец, пример сообщает были ли восстановлены исходные индексы.
// 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(str);
return;
}
}
AfxMessageBox(_T("The mapped indexes and original indexes are equal."),
MB_ICONINFORMATION);