CListCtrl的click事件与itemchanged事件
1、CListCtrl添加了checkbox;
2、itemchanged事件:
void CtestDlg::OnLvnItemchangedFilelist(NMHDR *pNMHDR, LRESULT *pResult)//在这里对复选框的状态进行查询
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: Add your control notification handler code here
USES_CONVERSION;
if(m_bHit)
{
m_bHit=FALSE;//复位
if(m_VideoList.GetCheck (m_itemSel))//m_itemSel是行号,checkbox选中
{
m_VideoList.SetItemText (m_itemSel,1,L"等待下载...");
}
//取消了checkbox框
else
{
m_VideoList.SetItemText(m_itemSel,1,L"");
}
}
*pResult = 0;
}
3、click事件:
void CtestDlg::OnNMClickFilelist(NMHDR *pNMHDR, LRESULT *pResult)//鼠标点击消息
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
USES_CONVERSION;
// TODO: Add your control notification handler code here
//单击所在的行号,找出鼠标位置
DWORD dwPos=GetMessagePos();
CPoint point(LOWORD(dwPos),HIWORD(dwPos));
m_VideoList.ScreenToClient (&point);
LVHITTESTINFO lvinfo;
lvinfo.pt =point;
//获取行号信息
int nItem=m_VideoList.HitTest (&lvinfo);
if(nItem!=-1)
{
m_itemSel=lvinfo.iItem ;//当前行号
}
//判断是否点击在checkbox上
if(lvinfo.flags =LVHT_ONITEMSTATEICON)//The position is over the state image of a list-view item.
m_bHit=TRUE;
*pResult = 0;
}
4、问题:当选择不同的复选框时,没有问题;若是只点击一个复选框,来回的勾选取消,相应的insert的text内容不显示,不知道是什么原因,大神们帮帮忙!谢谢!