cdatetimectrl значение больше 24 часов
От: meerius Канада  
Дата: 22.05.18 15:47
Оценка:
Добрый день.
Как заставить cdatetimectrl значение, где часы будут больше 24
Например, 28:00:00 — должно означать 4 часа утра следующего дня...
Интересует именно факт, как заставить cdatetimectrl принтать/показать значение 28 в часах.
«Мы с тобой в чудеса не верим, Оттого их у нас не бывает…»
Отредактировано 22.05.2018 15:56 meerius . Предыдущая версия .
Re: cdatetimectrl значение больше 24 часов
От: VladFein США  
Дата: 22.05.18 16:56
Оценка:
Здравствуйте, meerius, Вы писали:

M>Как заставить cdatetimectrl значение, где часы будут больше 24

M>Например, 28:00:00 — должно означать 4 часа утра следующего дня...
M>Интересует именно факт, как заставить cdatetimectrl принтать/показать значение 28 в часах.

Добавить DTS_APPCANPARSE стиль: https://msdn.microsoft.com/en-us/library/windows/desktop/bb761728(v=vs.85).aspx
Обрабатывать DTN_USERSTRING notification: https://msdn.microsoft.com/en-us/library/windows/desktop/bb761745(v=vs.85).aspx
Re[2]: cdatetimectrl значение больше 24 часов
От: meerius Канада  
Дата: 22.05.18 19:12
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, meerius, Вы писали:


M>>Как заставить cdatetimectrl значение, где часы будут больше 24

M>>Например, 28:00:00 — должно означать 4 часа утра следующего дня...
M>>Интересует именно факт, как заставить cdatetimectrl принтать/показать значение 28 в часах.

VF>Добавить DTS_APPCANPARSE стиль: https://msdn.microsoft.com/en-us/library/windows/desktop/bb761728(v=vs.85).aspx

VF>Обрабатывать DTN_USERSTRING notification: https://msdn.microsoft.com/en-us/library/windows/desktop/bb761745(v=vs.85).aspx

Обработчик на DTN_USERSTRING срабатывает после того, как фокус покидает поле ввода.
При вставке 28 значение не принимается контролом, пишет 8 вместо 28, все значения до 24 срабатывают нормально....

Делаю так:
ON_NOTIFY_REFLECT(DTN_USERSTRING, OnUserString) // Я наследуюсь от cdatetimectrl

void Form_VideoTimeCtrl::OnUserString(NMHDR* pNMHDR, LRESULT* pResult)
{
    NMDATETIMESTRING* pDateInfo = (NMDATETIMESTRING*)pNMHDR;

    CString strInput = pDateInfo->pszUserString;
    pDateInfo->dwFlags = GDT_VALID;
}
«Мы с тобой в чудеса не верим, Оттого их у нас не бывает…»
Re[3]: cdatetimectrl значение больше 24 часов
От: VladFein США  
Дата: 22.05.18 21:13
Оценка:
Здравствуйте, meerius, Вы писали:

M>При вставке 28 значение не принимается контролом, пишет 8 вместо 28, все значения до 24 срабатывают нормально....



Я могу напечатать "28", OnUserString() получает строку "28:...", но ето потом затирается предыдущим значением.
http://files.rsdn.org/21374/DateTime.png
Наверное, надо пересчитать в 4 часа завтра и SetTime().
Или Вы хотите, что бы "28" оставалось в контроле? Нету столько часов в сутках...
Может другой контрол подойдёт? Какая функциональность нужна?
Re[4]: cdatetimectrl значение больше 24 часов
От: meerius Канада  
Дата: 22.05.18 23:39
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Я могу напечатать "28", OnUserString() получает строку "28:...", но ето потом затирается предыдущим значением.

VF>http://files.rsdn.org/21374/DateTime.png
VF>Наверное, надо пересчитать в 4 часа завтра и SetTime().
VF>Или Вы хотите, что бы "28" оставалось в контроле? Нету столько часов в сутках...
VF>Может другой контрол подойдёт? Какая функциональность нужна?

Нужно, чтобы 28 оставалось в контроле
Другой контрол тоже подойдет.

Вот Юзер Стори:
If the station is from 6am to 6am the next day and the user search for titles that are between 28:00:00;00 and 29:00:00;00 on March 28th,
the result will be the title for which scheduled start time is between 4am and 5am on March 29th.

Бобщем, нужно позволить ползователю вводить 28:00:00;00 и уметь это показать. ("28" должно остаться в контроле)
Существуищий контрол наследуется от cdatetimectrl, но можно заменить на что-нибудь другое.
COleDateTime, например, или что-нибудь похожее.
«Мы с тобой в чудеса не верим, Оттого их у нас не бывает…»
Re[5]: cdatetimectrl значение больше 24 часов
От: VladFein США  
Дата: 23.05.18 00:29
Оценка: 2 (1)
Здравствуйте, meerius, Вы писали:

M>Бобщем, нужно позволить ползователю вводить 28:00:00;00 и уметь это показать. ("28" должно остаться в контроле)

M>Существуищий контрол наследуется от cdatetimectrl, но можно заменить на что-нибудь другое.
M>COleDateTime, например, или что-нибудь похожее.

COleDateTime — это не контрол. Тут рядом MaskedEdit обсуждали — я бы туда посмотрел.
А нельзя push back on that story? Reason: There is no 28:00:00;00 and 29:00:00;00 on March 28th...
Re[6]: cdatetimectrl значение больше 24 часов
От: meerius Канада  
Дата: 23.05.18 03:14
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>COleDateTime — это не контрол.

Да-да, все правильно, я перепутал

Тут рядом MaskedEdit обсуждали — я бы туда посмотрел.

Попробую, поковыряюсь.
Спасибо.
«Мы с тобой в чудеса не верим, Оттого их у нас не бывает…»
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.