0

CListBox があり、現在選択されている項目を上下に移動する [上へ移動]/[下へ移動] ボタンが必要です。

今のところ、唯一の解決策は、アイテムを削除してから新しい位置に挿入することだと思います。

それを行うためのより効率的な方法はありますか?

4

3 に答える 3

3

これは私が10年前に作ったスニペットです。削除と追加を使用して位置を切り替えますが、それが唯一の方法だと思います。

void CKnoepfeDlg::OnDown() 
{
    int item = m_list.GetNextItem(-1,LVNI_SELECTED);
    if(item == -1) 
        return;

    if(item < m_list.GetItemCount() - 1)
    {
        CString name,befehl;
        name = m_list.GetItemText(item,0);
        befehl = m_list.GetItemText(item,1);
        m_list.DeleteItem(item);
        m_list.InsertItem(item + 1,name);
        m_list.SetItemText(item + 1,1,befehl);
        m_list.SetItemState(item + 1,LVNI_SELECTED,LVIS_SELECTED);
    }
}
于 2012-08-22T11:05:19.737 に答える