void CConvertDlg::OnClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: Add your control notification handler code here
DWORD dwPos = GetMessagePos();
CPoint point(LOWORD(dwPos), HIWORD(dwPos));
m_ListConvert.ScreenToClient(&point);
LVHITTESTINFO lvinfo;
lvinfo.pt = point;
lvinfo.flags = LVHT_ABOVE;
UINT nFlag;
int nItem = m_ListConvert.HitTest(point, &nFlag); //nItem为选择行的行号
//判断是否点在checkbox上
if (nFlag == LVHT_ONITEMSTATEICON)
{
if(m_ListConvert.GetCheck(nItem)){//nItem行之前已经选中,即取消操作
m_ListConvert.SetItemState(nItem,0,-1);//取消行高亮
((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(FALSE);//全选项置为False
m_bSelAll = FALSE;
}
else//nItem行之前没被选中,即选中操作
{
m_ListConvert.SetItemState(nItem,LVIS_SELECTED,LVIS_SELECTED);//行高亮
}
}
else//选中的行显示高亮
{
int itemNumber = m_ListConvert.GetItemCount();
for(int i=0;i<itemNumber;i++){
if(m_ListConvert.GetCheck(i))m_ListConvert.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED);//行高亮
}
}
*pResult = 0;
}