Как выровнять текст по центру в CDateTimeCtrl? - PullRequest
0 голосов
/ 29 января 2019

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

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

Теперь я попытался вызвать CWnd::ModifyStyle в событии OnInitDialog().Кроме того, не повезло с этим.

Для фактического кода,

auto timePicker = (CDateTimeCtrl*)GetDlgItem(IDC_TIME_PICKER);
timePicker->ModifyStyle(0, SS_CENTER);

return TRUE; // this function is the OnInitDialog()

Чего не хватает, если вызов этой функции не центрирует текст CDateTimeCtrl?

1 Ответ

0 голосов
/ 29 января 2019

Вы не можете использовать стиль, который подходит для статического элемента управления, и использовать стиль в элементе управления датой и временем.

Все доступные стили перечислены здесь .

Сам элемент управления также не имеет дочерних элементов управления.Он рисует сами значения.Может быть, есть шанс подклассить элемент управления и переписать сообщение WM_PAINT и сделать своеобразный вывод владельца самостоятельно.

Я не использую средство выбора даты и признаюсь: мне это не нравитсясовсем.Я написал полный собственный элемент управления, который намного более гибок.

...