CListCtrl::MapIndexToID
一意の ID に現在のリスト ビュー コントロールの項目のインデックスをマップします
UINT MapIndexToID(
UINT index
) const;
パラメーター
パラメーター |
説明 |
---|---|
[入力] index |
項目のインデックス。 |
戻り値
指定した項目の一意の ID。
解説
内部的にリスト ビュー コントロールでは、インデックスによって項目を追跡します。 これは、インデックスがコントロールの有効期間中に変更できるため、問題が発生します。 リスト ビュー コントロールでは、項目が作成されるときに ID の項目をマークできます。 リスト ビュー コントロールの有効期間の特定の項目にアクセスするには、この ID を使用できます。
マルチスレッド環境でインデックスがリスト ビュー コントロールをホストするバックグラウンド スレッドのスレッドだけでなく、保証されないことに注意してください。
このメソッドは Windows SDKで説明する LVM_MAPINDEXTOID のメッセージを送信します。
必要条件
ヘッダー: afxcmn.h
このコントロールは Windows Vista 以降でサポートされます。
このメソッドに関するその他の要件については、「Windows Vista コモン コントロールの作成要件」を参照してください。
使用例
次のコード例は、現在のリスト ビュー コントロールへのアクセスに使用される変数、m_listCtrlを定義します。 この変数は次のように使用されます。
public:
// Variable used to access the list control.
CListCtrl m_listCtrl;
MapIndexToID メソッドのコード例を次に示します。 このコード例では、前のセクションでは、表示が 2 列「ClientID」およびレポートのビューの「変換」とよんだリスト ビュー コントロールを作成しました。 次の例では、ID 番号に各リスト ビューの項目のインデックスをマップし、各 ID 番号のインデックスを取得します。 最後に、元のインデックスを取得したかを報告します。
// 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);