none
关于listcontrol第一列单元格选择的问题 RRS feed

  • 问题

  • listcontrol第一列的单元格在用鼠标选择的时候, 我发现,必须点击单元格的靠左端(如果该列的宽度比较大的话),而其他列呢(非第一列),在用鼠标点击的时候是,只要是鼠标点击在单元格内的,都可以点击到,不需要靠左。在对单元格颜色设置时候,非第一列的都可以按照颜色设定显示正常,而第一列的单元格在选择之后,虽然颜色也是设定的颜色,但是有泛白(不知道怎么表达,但就是有白层那样)。我的问题就是,怎么改变第一列的这个选择状况,使它和 其他的列相同,并且去掉第一列设定颜色上的白层。

    我目前试了一下将第一列居中显示,代码就是msdn上说的在第一列添加一个虚拟列,然后删除,但是删除之后第二列变为第一列了,同时新的第一列也具有了原来被删掉的第一列的特性,就是上面所说的必须靠左选择的问题。

     

    先谢谢高手回答了。

    2011年5月22日 2:46

答案

  • 派生自CListCtrl类中处理=NM_CLICK消息,类似这样,带上LVS_EX_FULLROWSELECT属性,这样就可以得到您当前点击的是哪个item下的subitem区域,在DrawItem中绘制标记出来
    void CNewListCtrl::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
    {
     // TODO: Add your control notification handler code here
     NMLISTVIEW* pList = (NMLISTVIEW*)pNMHDR;
     int nItem = pList->iItem;
     if(-1 != nItem)
     {
      int nSubItem = pList->iSubItem;
      CString str;
      str.Format(_T("item: %d, subItem: %d"), nItem, nSubItem);
      AfxMessageBox(str);
     }
     *pResult = 0;
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月24日 0:34
    版主

全部回复

  • 您可以重写CListCtrl类,添加处理虚函数DrawItem. 自己在派生类中处理NM_CLICK点击消息


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月22日 6:13
    版主
  • 谢谢版主,我先试试。

    2011年5月22日 8:13
  • 版主,不行啊,处理了NM_CLICK消息,看了里面的数据,但是还是不知道下一步怎么做啊,能具体说一下不?

    2011年5月22日 9:59
  • 派生自CListCtrl类中处理=NM_CLICK消息,类似这样,带上LVS_EX_FULLROWSELECT属性,这样就可以得到您当前点击的是哪个item下的subitem区域,在DrawItem中绘制标记出来
    void CNewListCtrl::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
    {
     // TODO: Add your control notification handler code here
     NMLISTVIEW* pList = (NMLISTVIEW*)pNMHDR;
     int nItem = pList->iItem;
     if(-1 != nItem)
     {
      int nSubItem = pList->iSubItem;
      CString str;
      str.Format(_T("item: %d, subItem: %d"), nItem, nSubItem);
      AfxMessageBox(str);
     }
     *pResult = 0;
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月24日 0:34
    版主