VC中的MONTH CALENDAR控件(CMonthCalCtrl)--微软的BUG

在使用VC的CMonthCalCtrl控件时遇到日期获取不正确的问题,原因是控件类的GetCurSel()函数存在内部变量未清空的BUG。通过参考相关博客找到了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

使用MONTH CALENDAR控件时总是得不到正确的日期。

原因是该控件类提供的函数本身就有问题。GetCurSel()中几个变量没有被清空,导致数据总是向后延迟了很多。

以下是处理代码:

    SYSTEMTIME   st;   
    m_calendar.GetCurSel(
& st);   
    st.wHour 
= st.wMinute = st.wSecond = st.wMilliseconds = 0 ;   
    CTime   refDateTime(st);   

    ADOConn m_AdoConn;
    m_AdoConn.OnInitADOConn();
    _bstr_t vSQL;
    vSQL 
=   " SELECT CHECKDATE,SUM(DURATION) DURATION FROM DAYVIEW  " ;
    vSQL 
+=   "  where to_date(CHECKDATE,'YYYY/MM/DD') = to_date(' "   + (_bstr_t)refDateTime.Format( " %Y/%m/%d " ) + " ','YYYY/MM/DD') " ;
    vSQL 
+=   "  GROUP BY CHECKDATE " ;
//     m_times = (LPCTSTR)(_bstr_t)m_calendar.Format("%Y/%m/%d");
    AfxMessageBox(vSQL);

 

参考:http://blog.tom.com/hongya6088/article/523.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值