1. 我在对话框中添加了一个datetimepicker控件,
为什么对它添加了 COleDateTime 类型的变量之后,运行就出错!2. 另外m_Data 是 CDateTimeCtrl 类型的
COleDateTime odt(1999, 3, 12, 10, 10, 10);
m_Date.SetTime(odt);
没有用呢,控件显示的时间还是现在时间?

解决方案 »

  1.   


    第一个问题,我是用MFC向导生成的是CTime变量,不报错第二个问题解决如下:
    如一个对话框中有一个dateTimepicker控件,ID为IDC_DATETIMEPICKER1CString strTemp;
    strTemp=_T("2003-5-8");
    CWnd* pWnd=GetDlgItem(IDC_DATETIMEPICKER1);
    ::SendMessage(pWnd->m_hWnd,DTM_SETFORMAT,0,(LPARAM)(LPCTSTR)strTemp);
      

  2.   

    不过要补充一点,如果发送了DTM_SETFORMAT命令后就不能再手工修改此控件的date,详见MSDN。
      

  3.   

    是的,用Ctime就没问题,可是ColeDateTime会出错。另外,我在WindowsXp中运行完全没有错误。也可以修改时间。
    可是Windows2000就会出错。
    是不是Windows的问题?
      

  4.   

    lanlijing仁兄,此言差矣,我这样写为什么无效那,显示的还是当前时间那?BOOL CScoreInfo::PreCreateWindow(CREATESTRUCT& cs) 
    {
    // TODO: Add your specialized code here and/or call the base class
    SetTime1(); return CDialog::PreCreateWindow(cs);
    }
    void CScoreInfo::SetTime1()
    { CString strTemp;
    strTemp=_T("2003-5-8");
    CWnd* pWnd=GetDlgItem(IDC_DATETIMEPICKER2);
    ::SendMessage(pWnd->m_hWnd,DTM_SETFORMAT,0,(LPARAM)(LPCTSTR)strTemp);
    }我用msdn上的方法改变了SetTime1()函数void CScoreInfo::SetTime1()
    {
      // Gain a pointer to the control
      CDateTimeCtrl* pCtrl = (CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER2);
       ASSERT(pCtrl != NULL);   // set with a CTime
       CTime timeTime(1998, 4, 3, 0, 0, 0);
       VERIFY(pCtrl->SetTime(&timeTime));
    }也是没有效果,到底为什么,请各位帮助分析原因
      

  5.   

    你照我的方法去做:
    先在classwizard中将DateTimePicker映射一个COleDateTime类型的变量m_date,
    然后在对话框的初始化函数中:
    CScoreInfo::CScoreInfo(CWnd* pParent /*=NULL*/)
    : CDialog(CScoreInfo::IDD, pParent)
    {
     COleDateTime odt(1999, 3, 12, 10, 10, 10);
    m_date = odt;
    }