CListCtrlでアイテムをフォーカス&選択状態にしたい

[戻る]
ララ 2002/09/27(金) 10:37:29
CListCtrlでアイテムをフォーカス&選択状態にしたいので以下のように設定したのです
がうまくいきません。アイテムにフォーカス&選択状態にするやり方をご存知の方、ご
教授ください。よろしくおねがいします。

SetItemState(nItem,     // フォーカス&選択状態にしたいアイテムのインデックス
      LVIS_FOCUSED | LVIS_SELECTED,    // 状態
      LVIS_FOCUSED | LVIS_SELECTED);    // マスク

環境:XP、VC++6.0、MFC、SDKプラットホーム

ナオーバ 2002/09/27(金) 10:59:15
こんにちは

記述はあっていますが、どのようにうまくいかないのか?
使用部分のソースがないのでどうしていいかわかりませんが、

例として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 );
}
で使用できます。

dairygoods 2002/09/27(金) 17:07:06
リストコントロールのプロパティで「常に選択を表示」を設定しない場合、
リストコントロール自体にフォーカスが設定されていないと
選択状態は表示されませんが、その辺は大丈夫ですか?

ララ 2002/09/30(月) 11:34:59
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);    // マスク

としているのですが、アイテムがフォーカス&選択状態にならないのです。

古いスレッドには追加発言できません。