当CListCtrl的第3列的值发生变化时,我想更改第1列的值。 我使用LVN_ENDLABELEDIT做同样的事情,每当用户更改第3列的值并按回车键时,我的代码似乎工作正常。 但这不适用于用户粘贴此值(Ctlr + V)的情况。有什么建议吗?
代码
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_PAGEITEMS_LIST, &CClassList::OnListItemEndEditLabel)
void CClassList::OnListItemEndEditLabel(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
if(pDispInfo->item.iSubItem == 5)
{
CString days = m_List.GetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem);
COleDateTime date = COleDateTime::GetCurrentTime() + COleDateTimeSpan(_ttoi(days),0,0,0);
m_List.SetItemText(pDispInfo->item.iItem , 4, date.Format(VAR_DATEVALUEONLY));
}else if(pDispInfo->item.iSubItem == 4)
{
CString dateStr = m_List.GetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem);
COleDateTime date; date.ParseDateTime(dateStr);
CString DaysToDeliver;
DaysToDeliver.Format( L"%d", ( date - COleDateTime::GetCurrentTime() ).GetDays() +1 ) ;
m_List.SetItemText(pDispInfo->item.iItem , 5, DaysToDeliver);
}
// TODO: Add your control notification handler code here
*pResult = 0;
}