我在对话框中使用了usoft日期时间选择器控件。我首先将格式设置为“HH”:'mm''ddddMMMdd','yyyy'以及当前的本地日期&使用DTM-SETSYSTEMTIME的时间。如果用户更改控件中的任何字段,程序无法使用DTM-SETSYSTEMTIME重置控件中的日期和时间,尽管SendMessage返回1.据我所知,对话框将false(零)返回给任何通知收到有关控件的信息。
如上所述的问题是我第一次意识到这一点,但实际上它更简单。我连续做了两次DTM-SETSYSTEMTIME调用,只有第一次调用生效。即使返回状态为1,以下示例中的第二个也不会生效。
hwnd = GetDlgItem (hDlg, IDC_SUN_STAT_DATE_TIME);
Status = SendMessage (hwnd, DTM_SETFORMAT,0,(LPARAM)"HH':'mm' 'ddddMMMdd','yyyy");
Status = SendMessage (hwnd, DTM_SETSYSTEMTIME,GDT_VALID, (LPARAM)&systimeTime);
systimeTime.wHour += 2;
Status = SendMessage (hwnd, DTM_SETSYSTEMTIME,GDT_VALID, (LPARAM)&systimeTime);
似乎只有第一个DTM-SETSYSTEMTIME生效,后面的那些被忽略。
如何更改/重置控件中的日期/时间?或者(更有可能)我做错了什么?
答案 0 :(得分:1)
我已经将您的代码剪切并粘贴到我自己的Visual C ++ 6.0程序中,它对我来说非常适合。如果我注释掉第二个DTM_SETSYSTEMTIME,我会得到两个小时前的时间。代码中有些东西你没有向我们展示。
编辑:由于您已选择此答案,我不妨将其准确无误。我已用自己的程序验证了你的评论。
您对日期/时间选择器的意外行为的交互存在问题: