vc6.0 GetCurSel()为什么得不到正确日期
悬赏分:15 -
解决时间:2009-9-4 11:13
在使用月历控件时,选择日期并将其显示出来,但显示的日期和选择的日期不一样,会差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, (LPARAM)&sysTime); // CTime time =a-(b-c); t.Format("%d 年%d月%d日",sysTime.wYear,sysTime.wMonth,sysTime.wDay); AfxMessageBox(t); }