如题,我的一个界面里有几个listctrl,选中一个其他选中的就消失了,原来我以为vc不能这样的。但我看qq农场那个软件之后,又发现应该可以做到。虽然我不是百分百确认qq农场也是用vc做的。大家有办法吗?
图片请看相册:
http://photo.blog.sina.com.cn/photo/3fb75338g824acc200f0d

解决方案 »

  1.   

    给listctrl设置 LVS_SHOWSELALWAYS 属性
      

  2.   

    to#3:我已经加了这句
    m_LExam.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|);
    但无用
      

  3.   

    在资源中 设置 LVS_SHOWSELALWAYS 属性
      

  4.   


    不好意思,我是说我已经加了这个了
    SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_SHOWSELALWAYS);
      

  5.   

    LVS_SHOWSELALWAYS
    这个属性不是用SetExtendedStyle函数加的
    是在资源编辑器中设置的
    SetExtendedStyle设置的是扩展属性
    LVS_SHOWSELALWAYS是一般属性
    你注意一下ID号的规律就好了
      

  6.   

    应该是这个,在某个listctrl失去焦点后,用这个设置item为选中状态。
    pmyListCtrl->SetItemState(n, LVIS_SELECTED, LVIS_SELECTED);
    可能要个成员变量保存每个listctrl的选中项index。
      

  7.   

    1.我的dialog里面有3个listctrl,第二个表与第一个表关联,选中第二个表时,在click函数里加入
    void CDlgExamList::OnClickListTopic(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    int index = m_LTopic.GetNextItem(-1, LVNI_SELECTED);//第二个表选中项
    int index1 = m_LExam.GetNextItem(-1, LVNI_SELECTED);//第一个表选中项
    m_LExam.SetItemState(index1, LVNI_SELECTED, LVNI_SELECTED);
    CString strttno, str;
    。。
    }
    但无用。
    2.在资源管理器那里选择了show selection always,可以看到失去焦点那个列表的选中项了,不过本人嫌稍稍暗了点,能否改颜色呢?谢谢大家了!
      

  8.   


    自己重载NM_CUSTOMDRAW消息, 自绘选中时状态 . 可以参考其他的自绘例子, 比如: XListCtrl什么的 .