本人在弄日历控件的时候,mcn_selchange 改变日历的当前值,然后用GetCurSel获得日期 ,用COleDateTime作为参数,然后用GetYear() GetMonth() GetDay()获得日期,发现得到的值都是-1,显然错误;然后尝试改用CTime作为参数  进行同样的操作,选定的日期是 2003.03.20 得到的日期却是2003.04.01,显然也不对,哪位大虾弄过这方面的东东,指点一下迷津!谢谢!

解决方案 »

  1.   

    果然不对头,不过用SYSTEMTIME就可以
      

  2.   

    应该用MCM_SETCURSEL改变日历的当前值。
      

  3.   

    MCN_SELCHANGE是一个通知消息,由日历控件发出。MCM_SETCURSEL才是命令消息,控制控件的行为。你用错了,所以不是什么BUG。
      

  4.   

    假定 DateTimeCtrl 的 ID 为 IDC_DTP_TODAY, 可以这么设置它的日期, 下面是设置为当前日期,这里我用的是 CTime
    CTime theTime;
    CDateTimeCtrl *pdtp;pdtp = (CDateTimeCtrl *)GetDlgItem(IDC_DTP_TODAY);CString strTime;
    theTime = CTime::GetCurrentTime();SYSTEMTIME sysTime;
    memset(&sysTime, 0, sizeof(sysTime));
    sysTime.wYear = theTime.GetYear(); //可以是 int/long
    sysTime.wMonth = theTime.GetMonth(); //可以是 int/long
    sysTime.wDay = theTime.GetDay(); //可以是 int/long
    VERIFY(pdtp->SetTime(&sysTime));