我也是这样的,只要x轴的坐标小于16,我就认为点击了checkbox.

解决方案 »

  1.   

    panda_w的方法好!比如可以如下:
    (mylistdlg.h)afx_msg void OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult);(mylistdlg.cpp)ON_NOTIFY(LVN_ITEMCHANGED, IDC_MY_LIST, OnItemchangedList)void Cmylistdlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    *pResult = 0;

    if (pNMListView->uOldState == 0 && pNMListView->uNewState == 0)
    return; // No change         // Old check box state
    BOOL bPrevState = (BOOL)(((pNMListView->uOldState & 
    LVIS_STATEIMAGEMASK)>>12)-1);   

             if (bPrevState < 0) // On startup there's no previous state 
    bPrevState = 0; // so assign as false (unchecked) // New check box state
    BOOL bChecked=(BOOL)(((pNMListView->uNewState & LVIS_STATEIMAGEMASK)>>12)-1);   

             if (bChecked < 0) // On non-checkbox notifications assume false
    bChecked = 0;  if (bPrevState == bChecked) // No change in check box
    return;

    // Now bChecked holds the new check box state
             // ... do your process
    }