Получить дату с помощью элемента управления DateTimePicker, даже если флажок снят

0

Мне нужно использовать элемент управления Date and Time Picker для моего графического интерфейса. Чтобы сохранить пространство, я вынужден использовать стиль DTS_SHOWNONE.

Назначение флажка, в моем случае, было бы указать, был ли подписан контракт или нет. Это просто → введите дату, когда вы встретились с клиентом, и если контракт был подписан, просто установите флажок.

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

Вот что я попытался решить самостоятельно:

Я приведу раздел "Примечания":

Элементы управления DTP не поддерживают статический дочерний календарь месяца. Элемент управления DTP создает новый элемент управления календарным месяцем перед отправкой этого кода уведомления. Кроме того, управление DTP уничтожает дочерний элемент управления, когда он не активен (видим). Поэтому ваше приложение не должно полагаться на статический дескриптор окна в календарь дочернего месяца управления.

Я нашел то же самое для управления редактированием ->, когда больше не требуется, чтобы он был уничтожен.

Я попробовал выборку выбора подкласса для прослушивания сообщения WM_LBUTTONDOWN, но не смог получить дескриптор этого флажка. По моему мнению, он вставляется в combobox вместо созданного в виде отдельного окна.

Затем я использовал SPy++, чтобы наблюдать за поведением элемента управления, но не нашел ничего полезного.

Мне кажется, что у меня нет способа получить желаемое поведение путем подклассификации элемента управления dtae или использования существующих API.

ВОПРОС:

Может ли кто-нибудь, кто знает, как это сделать, покажет мне дорогу?

Если это невозможно, есть ли наоборот?

Что-то вроде удаления стиля DTS_SHOWNONE, изменения управления редактированием с помощью ES_CENTER а затем создания дочернего флажка слева (так что я могу обработать WM_COMMAND для флажка в процедуре подкласса)? Это просто мысль...

Спасибо. С наилучшими пожеланиями.

Теги:
winapi
checkbox
datetimepicker

1 ответ

2
Лучший ответ

Если у вас есть место для показа DTP с установленным собственным флажком, у вас есть место, чтобы отключить этот флажок и изменить размер одного края DTP, чтобы освободить место для отдельного элемента управления флажком, например:

Изображение 174551Изображение 174551

Затем вы можете сделать все, что захотите, с этим флажком.

  • 0
    тогда у вас есть место, чтобы отключить этот флажок, я не могу получить дескриптор флажка (я думаю, что он нарисован, это может быть не реальное окно). Тем не менее, я мог бы просто добавить флажок справа в качестве дочернего окна и подкласс DateTimePicker, чтобы ловить, когда он установлен или нет. Моя единственная проблема - рисование текста, поскольку мое приложение использует визуальные стили. Я пытаюсь добавить флажок в качестве дочернего окна справа при вводе этого комментария. Если бы вы могли опубликовать небольшой фрагмент кода или просто дать мне правильные советы для начала, я был бы очень признателен. Спасибо, что предложили помощь.
  • 0
    Хуже всего то, что шрифты не совпадают. Я попытался получить шрифт дочернего элемента управления MonthCalendar DatetimePicker и поставить его на флажок, но это не удалось -> элемент управления редактирования имеет "нормальный" шрифт, а флажок выделен жирным шрифтом :(
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню