CListCtrlでアイテムをフォーカス&選択状態にしたいので以下のように設定したのです
がうまくいきません。アイテムにフォーカス&選択状態にするやり方をご存知の方、ご
教授ください。よろしくおねがいします。
SetItemState(nItem, // フォーカス&選択状態にしたいアイテムのインデックス
LVIS_FOCUSED | LVIS_SELECTED, // 状態
LVIS_FOCUSED | LVIS_SELECTED); // マスク
環境:XP、VC++6.0、MFC、SDKプラットホーム
こんにちは
記述はあっていますが、どのようにうまくいかないのか?
使用部分のソースがないのでどうしていいかわかりませんが、
例としてCListViewの派生クラスCTmpViewでアイテム番号を渡して選択状態にする関数
// 選択状態にする
void CTmpView::SetSelectState(int nItem)
{
if( nItem < 0 ) nItem = 0; // 負の数の場合は先頭を選択状態にする
CListCtrl& wndList = this->GetListCtrl();
wndList.SetItemState( nItem, LVIS_SELECTED|LVIS_FOCUSED,
LVIS_SELECTED|LVIS_FOCUSED );
}
で使用できます。
リストコントロールのプロパティで「常に選択を表示」を設定しない場合、
リストコントロール自体にフォーカスが設定されていないと
選択状態は表示されませんが、その辺は大丈夫ですか?
CListCtrlのCreateのリストコントロールスタイルでLVS_SHOWSELALWAYSフラグを設けて
いるので「常に選択を表示」にはなっていると思います。
以下にリストコントロール作成のソースを記述します。
CListCtrl theListCtrl;
theListCtrl.Create(LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER |
LVS_NOSORTHEADER | LVS_EDITLABELS | WS_EX_ACCEPTFILES | WS_VISIBLE | WS_CHILD,
crc, this, IDC_LIST);
こういう風に作成して
SetItemState(nItem, // フォーカス&選択状態にしたいアイテムのインデックス
LVIS_FOCUSED | LVIS_SELECTED, // 状態
LVIS_FOCUSED | LVIS_SELECTED); // マスク
としているのですが、アイテムがフォーカス&選択状態にならないのです。