CDateTimeCtrl - предотвращение изменения фокуса при установке даты - PullRequest
1 голос
/ 23 апреля 2010

Я хотел бы использовать CDateTimeCtrl, чтобы позволить пользователю выбирать дату, не относящуюся к выходным.Таким образом, если пользователь увеличивает день (нажатием клавиши) - и найденный день выпадает на выходные - тогда элемент управления должен перейти к следующему понедельнику (не позволяйте проблемам с изменениями месяца отвлекать вас, это не такрелевантно).

Обычно это не проблема: когда я обрабатываю уведомление DTN_DATETIMECHANGE, я могу проверить новую дату / время и, если обнаружится, что это выходные, я могу позвонить SetTime на элементе управленияобновить дату. Однако, если я установлю стиль на DTS_SHOWNONE, этот вызов SetTime заставит элемент управления сместить вход «focus» (термин используется свободно) на флажок «none», например, отдневное поле.Это препятствует тому, чтобы пользователь использовал ввод с клавиатуры, чтобы продолжать увеличивать дату, если он впоследствии не использует клавишу со стрелкой вправо для сброса «фокуса», что просто противно.сдвиг от происходящего.Это вообще возможно?

1 Ответ

2 голосов
/ 23 апреля 2010

Не уверен, но один возможный обходной путь:

keybd_event(VK_RIGHT, 0, 0, NULL);
keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, NULL);
...