粘贴通知

时间:2017-08-02 14:13:19

标签: mfc

当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;
}

0 个答案:

没有答案