void CCalendar::OnSelectMonthcalendar(NMHDR* pNMHDR, LRESULT* pResult) 
{
          int nYear;
int nMonth;
int nDay;
nYear=m_time.GetYear();
nMonth=m_time.GetMonth();
nDay=m_time.GetDay();
//测试     
CString strTime;
strTime.Format("Y:%d--M:%d--D:%d",nYear,nMonth,nDay);
AfxMessageBox(strTime);
    //得到选择的日期
UpdateData(TRUE);

nYear=m_time.GetYear();
nMonth=m_time.GetMonth();
nDay=m_time.GetDay();
    //测试
strTime.Format("Y:%d--M:%d--D:%d",nYear,nMonth,nDay);
AfxMessageBox(strTime);
}
问题描述:
我用了个MonthCalendar控件,此控件与m_time关联,CTime类型.
响应MCN_SELECT时间的函数如上.用来测试选择的时间是否映射到变量:m_time上.
如果要得到选择前的时间是否在UpdateData以前获取m_time的值就可以?用了2个消息对话框来测试.但是,怎么也得不到鼠标选择得时间/选择时的时间与变量m_time的时间不一致.高手执教:
1:怎么去事实得到鼠标选择时的时间值?
2:怎么得到鼠标选择前一次的时间值?附:昨天晚上问过了,但是又有了新问题.还希望大家执教.那个问题已经发分了.此问题在线等候,解决问题就给分.
谢谢!自由浪漫的战士!

解决方案 »

  1.   

    1:怎么去事实得到鼠标选择时的时间值?void CCalendar::OnSelectMonthcalendar(NMHDR* pNMHDR, LRESULT* pResult)
    {
        CTime t = CTime::GetCurrentTime();    ……
    }2:怎么得到鼠标选择前一次的时间值?不明白你在说些什么?
      

  2.   

    晕,我还以为你搞定了。
    在MCN_SELECT响应函数中 SYSTEMTIME sysTime;
    ((CMonthCalCtrl*) GetDlgItem(IDC_MONTHCALENDAR1))->GetCurSel(&sysTime); CString str ;
    str.Format("%d,%d,%d",sysTime.wYear,sysTime.wMonth,sysTime.wDay);
    AfxMessageBox(str);
      

  3.   

    第二个问题可以这样,每次响应mcn_select把日期保存在一个对话框成员变量中,这样下次响应mcn_select的时候只要读那个变量的值就知道上一次选择的时间值了。