CListCtrl::MapIndexToID
Mapeia o índice de um item no controle de exibição de lista corrente para uma ID exclusiva.
UINT MapIndexToID(
UINT index
) const;
Parâmetros
Parâmetro |
Descrição |
---|---|
[in] index |
O índice de um item baseado em zero. |
Valor de retorno
Uma ID exclusiva para o item especificado.
Comentários
Um controle de exibição de lista internamente controla itens pelo índice.Isso pode apresentar problemas como índices podem ser alterado durante a tempo de vida do controle.O controle de exibição de lista pode marcar um item com uma ID quando o item é criado.Você pode usar essa ID para acesso um item específico para a vida útil do controle de exibição de lista.
Observe que em um ambiente multithreaded o índice é garantido apenas no thread que hospeda o controle de exibição de lista, não em threads em segundo plano.
Esse método envia o LVM_MAPINDEXTOID mensagem, que é descrita no Windows SDK.
Requisitos
Cabeçalho: afxcmn.h
Este controle é suportado no Windows Vista e mais recente.
Requisitos adicionais para este método são descritos em compilação Requisitos para controles comuns do Windows Vista.
Exemplo
O exemplo de código a seguir define uma variável, m_listCtrl, que é usado para acessar o controle de exibição de lista corrente. Essa variável é usada no exemplo a seguir.
public:
// Variable used to access the list control.
CListCtrl m_listCtrl;
O exemplo de código a seguir demonstra o MapIndexToID método. Em uma seção anterior deste exemplo de código, criamos um controle de exibição de lista que exibe duas colunas intituladas "ClientID" e "classificação" em um modo de exibição de relatório.O exemplo a seguir mapeia o índice de cada item de exibição de lista para um número de identificação e, em seguida, recupera o índice para cada número de identificação.Finalmente, o exemplo informa se os índices originais foram recuperados.
// 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);