【发布时间】:2009-12-19 16:46:48
【问题描述】:
我在对话框中使用 usoft 日期时间选择器控件。我首先使用 DTM-SETSYSTEMTIME 将格式设置为 "HH':'mm' 'ddddMMMdd','yyyy" 和当前本地日期和时间。如果用户更改控件中的任何字段,尽管 SendMessage 返回 1,但程序无法使用 DTM-SETSYSTEMTIME 重置控件中的日期和时间。据我所知,对话框对任何通知都返回 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 生效,后面的被忽略。
如何更改/重置控件中的日期/时间?或者(更有可能)我做错了什么?
【问题讨论】:
-
你好,什么语言和框架?
-
@Skurmedel:visual c++ 6.0,我可以检索修改后的日期/时间,但无法设置新的,无论用户做什么,控件都会保持冻结状态。
-
我尝试处理 DTN-DATETIMECHANGE 并使用 SetWindowLong (hwnd,DWL_MSGRESULT,0) 返回零,这会导致控件中的日期时间设置为空白。我应该复制在 NMDATETIMECHANGE .st 某个地方找到的 SYSTEMTIME 吗?
-
好的 :) 如果您不介意,我重新标记它。拥有语言标签会使其显示为未答复,并且可能会更快地为您提供帮助。
-
我的意思是,它会在未回答的语言标签下突出显示,因为我认为很多人监控特定标签。
标签: c++ visual-c++ controls dialog datepicker