CListCtrl::MapIndexToID
Mapeia o índice de um item no controle atual de exibição de lista a uma identificação exclusiva
UINT MapIndexToID(
UINT index
) const;
Parâmetros
Parâmetro |
Descrição |
---|---|
[in] index |
O índice com base zero de um item. |
Valor de retorno
Um ID exclusivo para o item especificado.
Comentários
Um controle de exibição de lista internamente rastreia itens pelo índice.Isso pode enfrentar problemas porque os índices podem alterar durante o ciclo de vida do controle.O controle de list view pode marcar um item com uma identificação quando o item é criado.Você pode usar essa identificação para acessar um item específico para o tempo de vida do controle de exibição de lista.
Observe que em um ambiente de vários segmentos que o índice é garantido somente no segmento que hospeda o controle de list view, não em segmentos de plano de fundo.
Este método envia a mensagem de LVM_MAPINDEXTOID , que é descrita em Windows SDK.
Requisitos
Cabeçalho: afxcmn.h
Esse controle é suportado em Windows Vista e posteriormente.
Os requisitos adicionais para o método são descritos em Criar requisitos de controles comuns do Windows Vista.
Exemplo
O exemplo de código a seguir define uma variável, m_listCtrl, que é usada para acessar o controle atual de exibição de lista.Esta variável é usado no exemplo a seguir.
public:
// Variable used to access the list control.
CListCtrl m_listCtrl;
O exemplo de código demonstra o método de MapIndexToID .Em uma seção anterior de este exemplo de código, nós criaremos um controle de exibição de lista que exibe duas colunas intitulassem “ClientID” e “classificar” em um visualizador de relatório.O exemplo a seguir mapeia o índice de cada item de exibição de lista a 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);