CListCtrl::MapIndexToID
Esegue il mapping dell'indice di un elemento nel controllo elenco corrente a un ID univoco
UINT MapIndexToID(
UINT index
) const;
Parametri
Parametro |
Descrizione |
---|---|
[in] index |
L'indice in base zero di un elemento. |
Valore restituito
Un ID univoco dell'elemento specificato.
Note
Un controllo visualizzazione elenco internamente tenere traccia degli elementi tramite l'indice.Questa operazione presenta problemi perché gli indici possono cambiare durante la durata del controllo.Il controllo elenco può contrassegnare un elemento con un ID quando l'elemento verrà creato.È possibile utilizzare questo ID per accedere a un elemento specifico per la durata del controllo visualizzazione elenco.
Si noti che in un ambiente multithreading che l'indice è garantita solo sul thread che ospita il controllo elenco, non sui thread in background.
Questo metodo invia il messaggio LVM_MAPINDEXTOID, come descritto in Windows SDK.
Requisiti
intestazione: afxcmn.h
Questo controllo è supportato in Windows Vista e versioni successive.
i requisiti aggiuntivi per questo metodo sono descritti in Requisiti di compilazione per i controlli comuni di Windows Vista.
Esempio
Nell'esempio di codice definisce una variabile, m_listCtrl, utilizzata per accedere al controllo elenco corrente.Questa variabile viene utilizzata nell'esempio seguente.
public:
// Variable used to access the list control.
CListCtrl m_listCtrl;
Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo del metodo MapIndexToID.In una sezione precedente di questo esempio di codice, creato un controllo elenco che visualizza due colonne denominato "ClientID" e "conversione" in una visualizzazione report.Nell'esempio seguente viene eseguito il mapping dell'indice di ogni voce della visualizzazione elenco a un numero di identificazione quindi recupera l'indice di ogni numero di identificazione.Infine, nell'esempio indica se gli indici originali sono stati recuperati.
// 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);