怎样在CListCtrl的OnItemChanged事件中得到当前或被修改了的单元格列号?
   行号可以这样得到:   int iCurSel;
   iCurSel = m_pOperList.GetSelectionMark();但怎么得到列号呢?

解决方案 »

  1.   

    void CStepPage::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
          // TODO: Add your control notification handler code here int nRow=-1;
    int nColumn=-1;

            nRow=pNMListView->iItem;       //行号是正确的
            nColumn=pNMListView->iSubItem; //列号为什么不正确 ?  *pResult = 0;
    }
     MFC中的NM_LISTVIEW*结构为:
     typedef struct tagNMLISTVIEW {
       NMHDR hdr;
       int iItem;
       int iSubItem;
       UINT uNewState;
       UINT uOldState;
       UINT uChanged;
       POINT ptAction;
       LPARAM lParam;
     } NMLISTVIEW, FAR* LPNMLISTVIEW;
      

  2.   

    OnItemchanged事件中传递列号没有意义。
      

  3.   

    to   jiangsheng(蒋晟.Net[MVP]):   那为什么没有意义呢?
       既然系统已检测到某个单元格的值发生变化,获得这个单元格是哪一行哪一列不是很容易吗?
      

  4.   

    //根据消息里的鼠标位置取行和列
    int iActiveIndex = 0 , iColIndex = 0;
    LV_HITTESTINFO lvH = {0};
    lvH.pt.x = pNMListView->ptAction.x;
    lvH.pt.y = pNMListView->ptAction.y;
    m_ListEKey.SubItemHitTest(&lvH); //这是CListView对象的检测函数
    iActiveIndex = lvH.iItem;//行索引
    iColIndex = lvH.iSubItem;//列索引