VisualStudio2008でMFCアプリケーションを開発しています。チェックボックスのあるCListCtrlオブジェクトがあります。スペースバーで強調表示されているすべての項目を切り替える簡単な方法があるかどうか疑問に思っています。現在、スペースバーダウンイベントで私はこれを行っています:
void toggleSelect()
{
POSITION pos = m_cListCtrl.GetFirstSelectedItemPosition();
while(pos)
{
int index = m_cListCtrl.GetNextSelectedItem(pos);
BOOL check = m_cListCtrl.GetCheck(index);
m_cListCtrl.SetCheck(index, !check);
}
}
これは、単一のアイテムが強調表示されたときのスペースバーのデフォルトの動作であると私が信じているものではなかった場合に機能します(単一のアイテムが選択されるとチェックボックスが自動的に切り替えられます)。このコードの問題は、切り替えられていないチェックボックスが常に1つあることです。これは、選択された単一のアイテムを切り替えるスペースバーのデフォルトの動作によるものです。デフォルトを無効にする方法はありますか?