这个是clistctrl改变中的回调
void CclistctrlDlg::OnLvnItemchangingList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
if (LVIF_STATE == pNMLV->uChanged && (pNMLV->uNewState & (LVIS_SELECTED|LVIS_FOCUSED)))
{
if(m_nItem == pNMLV->iItem) // 不能选择本次所选择的行数
{
*pResult =-1;
return;
}
if (pNMLV->iItem == 5) // 某个条件满足,则不往下执行
{
// m_listctrl.SetItemState(m_nItem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); // m_listctrl.SetFocus(); 这两行表示设置回原来的选择 *pResult = -1;
return ;
}
m_nItem = pNMLV->iItem;
}
*pResult = 0;
}// 改变后的响应
void CclistctrlDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
if (LVIF_STATE == pNMLV->uChanged && (pNMLV->uNewState & (LVIS_SELECTED|LVIS_FOCUSED)))
{
// 做某些事情
}
*pResult = 0;
}请问如标题所述,我该怎样写,才能再达到某些条件后,listctrl上面依然显示的是我上次的选择,注明,需要亮显,也就是说,等于没有点选别行时的那种样子。谢谢
void CclistctrlDlg::OnLvnItemchangingList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
if (LVIF_STATE == pNMLV->uChanged && (pNMLV->uNewState & (LVIS_SELECTED|LVIS_FOCUSED)))
{
if(m_nItem == pNMLV->iItem) // 不能选择本次所选择的行数
{
*pResult =-1;
return;
}
if (pNMLV->iItem == 5) // 某个条件满足,则不往下执行
{
// m_listctrl.SetItemState(m_nItem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); // m_listctrl.SetFocus(); 这两行表示设置回原来的选择 *pResult = -1;
return ;
}
m_nItem = pNMLV->iItem;
}
*pResult = 0;
}// 改变后的响应
void CclistctrlDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
if (LVIF_STATE == pNMLV->uChanged && (pNMLV->uNewState & (LVIS_SELECTED|LVIS_FOCUSED)))
{
// 做某些事情
}
*pResult = 0;
}请问如标题所述,我该怎样写,才能再达到某些条件后,listctrl上面依然显示的是我上次的选择,注明,需要亮显,也就是说,等于没有点选别行时的那种样子。谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货