怎样知道点击了clistctrl的哪行哪列,该如何解决

怎样知道点击了clistctrl的哪行哪列
CListCtrl::SubItemHitTest


LVHITTESTINFO lvhti;
lvhti.pt = point;(point 为坐标)
int iItem = CListCtrl::SubItemHitTest(&lvhti);

点击第一列的文字部分 得到的是正确的行数。
点击第一列的非文字部分,却得不到正确行数,得到-1.
请问是为什么啊?
还有 我有更好的方法知道 行和列吗

------解决方案--------------------
C/C++ code
// NM_CLICK
void CXXXXDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
    // TODO: Add your control notification handler code here
    CPoint pt;
    GetCursorPos(&pt);
    m_list.ScreenToClient(&pt);
    LVHITTESTINFO lvhti;
    lvhti.pt = pt;
    m_list.SubItemHitTest(&lvhti);
    if(lvhti.flags & LVHT_ONITEMLABEL)
    {
        CString str;
        str.Format(_T("item: %d, subitem: %d"), lvhti.iItem, lvhti.iSubItem);
        AfxMessageBox(str);
    }
    *pResult = 0;
}