我在初始化函数OnInitDialog()中,用SetItemState设置第2项("22222")被默认选中,但结果不行,什么原因啊?BOOL CTestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    //
    m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVIS_FOCUSED);
    m_listctrl.InsertItem(0, "11111");
    m_listctrl.InsertItem(1, "22222");
    
    m_listctrl.SetItemState(1, LVIS_SELECTED, LVIS_SELECTED);
    UpdateData(false);    return TRUE;
}

解决方案 »

  1.   

    m_listctrl.ModifyStyle( LVS_SHOWSELALWAYS, 0 );
      

  2.   


    BOOL CTestDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
        //
        m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVIS_FOCUSED | LVS_SHOWSELALWAYS ); /////LVS_SHOWSELALWAYS 
        m_listctrl.InsertItem(0, "11111");
        m_listctrl.InsertItem(1, "22222");
        
        m_listctrl.SetItemState(1, LVIS_SELECTED, LVIS_SELECTED);
        UpdateData(false);m_listctrl.SetFocus();    return FALSE ;////////
    }
      

  3.   

    我试了,不行啊。
    m_listctrl.ModifyStyle(LVS_SHOWSELALWAYS, 0);
    m_listctrl.SetItemState(1, LVIS_SELECTED, LVIS_SELECTED);
    效果是Dialog启动后,只有当鼠标放在listctrl控件的某一项上的时候(不用单击),这个条目自动被选中。
    我的意思是,Dialog启动后,就自己默认某一项上被选中了,且为高亮显示了。如何做呢?
      

  4.   

    m_cListCtrl.SetItemState(1,LVIS_SELECTED, LVIS_SELECTED);
    m_cListCtrl.SetFocus();
    m_cListCtrl.EnsureVisible(1,true);
      

  5.   

    OnInitDialog()函数最后有个return TRUE,如果你稍微看一下解释就可以了
    // return TRUE  unless you set the focus to a control
    也就是说,如果你要设置交点在某个控件上,必须不能return true。
    你return False就可以了
      

  6.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=210488
    注意选中listctrl的show selection always
      

  7.   


    m_wndList.ModifyStyle(0, LVS_SHOWSELALWAYS | LVS_SINGLESEL);
    m_wndList.SetExtendedStyle(m_wndList.GetExtendedStyle() | LVS_EX_FULLROWSELECT | 
    LVS_EX_INFOTIP | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT );