vc6.0 GetCurSel()为什么得不到正确日期

来源:百度知道 编辑:UC知道 时间:2024/06/18 15:09:33
在使用月历控件时,选择日期并将其显示出来,但显示的日期和选择的日期不一样,会差3,4年,为什么?要减去一个值才行。
CTime a;
CString t;
CMonthCalCtrl *mCtrl=(CMonthCalCtrl*)GetDlgItem(IDC_MONTHCALENDAR1);
mCtrl->GetCurSel(a);
CTime b(2011,7,2,0,0,0);
CTime c(2008,1,1,0,0,0);
m_SelectDay=a-(b-c);
我想知道为什么这个日期不准确,哪位给解释一下。

CTime a;
CString t;
CMonthCalCtrl *mCtrl=(CMonthCalCtrl*)GetDlgItem(IDC_MONTHCALENDAR1);
mCtrl->GetCurSel(a);
CTime b(2011,7,2,0,0,0);
CTime c(2008,1,1,0,0,0);
CTime time =a-(b-c);
t = time.Format("%Y 年%m月%d日");
AfxMessageBox(t);
对的啊

CTime operator +( CTimeSpan timeSpan ) const;

CTime operator -( CTimeSpan timeSpan ) const;

CTimeSpan operator -( CTime time ) const;

b和c都是CTime,所以它调用第三个-(CTimeSpan operator -( CTime time ) const;),所以它的返回值是CTimeSpan
a是CTime,第二个参数是CTimeSpan,所以调用第二个-(CTime operator -( CTimeSpan timeSpan ) const;)
b和c的时间差大约是两年多,你选择的时间减它,当然少了两了两年多

这是一个Bug
void CDlgDlg::OnButton1()
{
// CTime a;
CString t;
CMonthCalCtrl *mCtrl=(CMonthCalCtrl*)GetDlgItem(IDC_MONTHCALENDAR1);
// mCtrl->GetCurSel(a);

SYSTEMTIME sysTime;
::SendMessage(mCtrl->GetSafeHwnd(), MCM_GETCURSEL, NULL, (L