リストビューの行を削除する際に、わかりやすくするために
リストビューで複数行選択させないようにする方法を知りたいです。
デフォルトではリストビューは複数行選択できるようになっています。
リストビューの選択状態に変化があると、WM_NOTIFYメッセージがウィンドウプロシージャに送られ、
LPARAMにあるNMHDR構造体のポインタから、該当のリストビューの選択状態に変化があったことを示す、
LVN_ITEMCHANGEDの通知コードかどうかを調べるところまではできたんですが、
その後の、「フォーカスが当たっているところだけ選択状態にする」方法がわかりません。
以下はその一部のコードですが、
方法として、
ListView_GetNextItemでフォーカスが当たっている行のインデックスを取得し、
ListView_SetItemStateで該当行を選択状態にする方法を行ってみたんですが 、
実際に複数行を選択しようとすると、何故か全行選択されてしまいます。
どうにかして、「フォーカスが当たっている所だけ選択状態にする」方法をご存知の方いらっしゃいませんでしょうか?
hdr=(NMHDR*)lp;
if(hdr->hwndFrom==list_hwnd && hdr->idFrom==CHILD_LISTVIEW){
if(hdr->code==LVN_ITEMCHANGED){
//まずフォーカスが当たっているところの場所のインデックスを調べる。
index=ListView_GetNextItem(list_hwnd,-1,LVNI_ALL | LVNI_FOCUSED);
//フォーカスが当たっている行だけを、選択状態にする。
ListView_SetItemState(list_hwnd,index,LVIS_SELECTED,LVIS_SELECTED);
}
}