次の方法で共有


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);

参照

関連項目

CListCtrl クラス

階層図

LVM_MAPINDEXTOID

CListCtrl::MapIDToIndex