本帖最后由 shieher 于 2010-04-27 00:44:18 编辑

解决方案 »

  1.   

    www.codeproject.com/KB/miscctrl/datetimeeditctrl.aspx
      

  2.   

    通过发送消息DTM_SETFORMAT,可以任意的改变控件的显示格式: 在对话框的OnInitDialog函数用下面的代码: GetDlgItem(IDC_DTP)->SendMessage(DTM_SETFORMAT,0,(LPARAM)("'Today is: 'hh':'m':'s ddddMMMdd', 'yyy"));//IDC_DTP是控件的ID m_t.SendMessage(DTM_SETFORMAT,0,(LPARAM)("'Today is: 'hh':'m':'s ddddMMMdd', 'yyy")); 
    //m_t也是CDateTimeCtrl类型的。 两种方法我都试过,没有问题的。 May You Success! 
      

  3.   

    看了下DEMO,可以实现要的效果,但我想有没有其他的方法,这样的话对我来说有点复杂。
    我要的效果:
    CDateTimeCtrl控件初始化时显示为空,然后可以通过鼠标点击选择日期,如果有日期,可以删除。
    我的处理方式:
    拖了个CDateTimeCtrl控件到对话框,修改属性allow edit为true,初始化时改变格式为空,在DTN_DATETIMECHANGE中把格式改为DTM_SHORTDATEFORMAT,然后在NM_KILLFOCUS中通过对控件进行
    getwindowtext获取值来判断是否为空来处理。
    问题:
    空间如果有日期,可以删除,但无法保存,失去焦点依然会显示上次鼠标选择的日期。既通过getwindowtext获取依然有值,不为空。如何能获得空值?
    另外我想在CDateTimeCtrl控件PreTranslateMessage中捕获wm_keydown中的删除按键,但好象捕获不了,似乎按键根本没触发,大惑不解。