CListBox があり、現在選択されている項目を上下に移動する [上へ移動]/[下へ移動] ボタンが必要です。
今のところ、唯一の解決策は、アイテムを削除してから新しい位置に挿入することだと思います。
それを行うためのより効率的な方法はありますか?
これは私が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);
}
}