0

こんにちは、20 個のアイテムを持つ ClistCtrl を使用しており、選択したアイテム数を制限したいと考えています。たとえば、10 項目しか選択できません。どうすればできますか?助けてくれてありがとう。

4

3 に答える 3

1

LVN_ODSTATECHANGED 通知メッセージを処理し、LVIS_SELECTED 状態が変化するたびに選択されたアイテムの数をカウントする必要があります。

ありがとう

于 2011-03-14T13:03:39.077 に答える
1

だから私はこのコードを書きました。それはうまくいくはずです。リストのイベントハンドラーを作成するだけです

void CDatenbankView::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    int SelctedItems;
    SelctedItems = 0;
    int Index;

    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

    for (Index = 0; Index < m_List.GetItemCount(); ) //Check every Item
    {
        if (m_List.GetItemState (Index, LVIS_SELECTED) == LVIS_SELECTED) //Checks if it is selected
        {
            if (SelctedItems > 10) 
            {
                MessageBox (_T("Cant select more than 10 Items"));
                for (Index = 0; Index < m_List.GetItemCount(); )
                {
                    m_List.SetItemState (Index, ~LVIS_SELECTED, LVIS_SELECTED);
                    Index++;
                }
                break;
            }
            else
            {
                SelctedItems++;
            }
        }
        Index++;
    }
    *pResult = 0;
}

m_List は、CListCtrl の制御変数です。

于 2013-11-27T11:21:21.233 に答える
0

このような機能の組み込み機能はありません。そのためには、私たちのコードを書く必要があります。ソースリストと「選択リスト」を使用するなど、別の方法を見つけることができるかもしれません。最初のアイテムから 2 番目のアイテムにアイテムをコピー/移動しますが、ユーザーが 10 を超えるアイテムを宛先リストに入れることを許可しません。

于 2011-03-14T13:16:02.770 に答える