次の方法で共有


CListCtrl::MapIndexToID

現在のリスト ビュー コントロールのアイテムのインデックスを一意の ID に関連付けます。

UINT MapIndexToID(
     UINT index
) const;

パラメーター

パラメーター

説明

[入力] index

アイテムの 0 から始まるインデックス。

戻り値

指定したアイテムの一意の ID。

解説

リスト ビュー コントロールの内部では、各アイテムがインデックスによって管理されています。 ところが、インデックスはコントロールの有効期間内に変更されることがあるので、この動作には問題があります。 そこで、リスト ビュー コントロールでは、アイテムの作成時にアイテムに ID を設定できるようになっています。 その ID を使用すれば、リスト ビュー コントロールが有効になっている限り、特定のアイテムに正しくアクセスできます。

マルチスレッド環境でインデックスが保証されるのは、リスト ビュー コントロールをホストするスレッドに限られます。バックグラウンド スレッドでは、保証されません。

このメソッドは、LVM_MAPINDEXTOID メッセージを送信します。このメッセージについては、Windows SDK を参照してください。

必要条件

**ヘッダー:**afxcmn.h

このコントロールは、Windows Vista およびそれ以降のバージョンでサポートされています。

このメソッドに関するその他の要件については、「Windows Vista コモン コントロールの作成要件」を参照してください。

使用例

次のコード例では、現在のリスト ビュー コントロールにアクセスするために使用される変数 m_listCtrl を定義しています。 この変数は、次の例で使用されます。

public:
    // Variable used to access the list control.
    CListCtrl m_listCtrl; 

MapIndexToID メソッドのコード例を次に示します。 このコード例の前半部分では、"ClientID" および "Grade" というタイトルの 2 つの列をレポート ビューに表示するリスト ビュー コントロールを作成しました。 次の例では、各リスト ビュー アイテムのインデックスを識別番号にマップしてから、各識別番号のインデックスを取得しています。 最後に、元のインデックスが取得されたかどうかをレポートします。

    // 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

その他の技術情報

CListCtrl のメンバー