Я использую управление выбора времени в 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 вводится в действие, следующие из них игнорируются.
Что мне нужно сделать, чтобы изменить/сбросить дату/время в элементе управления? Или (более вероятно), что я делаю неправильно?
Привет, какой язык и каркас? – Skurmedel
@Skurmedel: visual C++ 6.0, я могу получить измененную дату/время, но я не могу установить новую, элемент управления остается замороженным независимо от того, что сделал пользователь. –
Я пробовал обращаться с DTN-DATETIMECHANGE и возвращать ноль с помощью SetWindowLong (hwnd, DWL_MSGRESULT, 0), что заставляет время даты в элементе управления быть установленным в пробелы. Должен ли я копировать SYSTEMTIME, найденный в NMDATETIMECHANGE .s где-нибудь? –