转关于使用月历控件时·时间不准确问题

 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);
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值