Я использую Visual Studio 2010 для создания приложения native/win32/MFC C++. У меня есть диалог, в котором я хочу, чтобы пользователь мог ввести дату. Для этого я использовал CDateTimeCtrl, который является оберткой общих элементов управления Win32.собственный календарный контроль C++/Win32/MFC с настраиваемым размером шрифта
Это хорошо, так как пользователь может щелкнуть стрелку, и она опустится на месяц, позволяя им в интерактивном режиме выбрать дату.
Проблема, с которой я столкнулся, заключается в том, что вы не можете контролировать размер шрифта, используемый в представлении месяца. Он игнорирует WM_SETFONT и, хотя в документации по управлению упоминаются вызовы, которые скажут ему использовать пользовательский шрифт (см. CDateTimeCtrl :: SetMonthCalFont()), они игнорируются.
Я обнаружил, наконец, через службу технической поддержки MS, что он работает в v5 общих элементов управления, но в v6 они изменили его, чтобы игнорировать это и просто использовать текущую информацию о визуальном стиле, установленную в Windows. Согласно MS нет способа получить собственный шрифт, элемент управления в v6 будет использовать только текущий визуальный стиль Windows. Единственным способом было бы принудительное использование элементов управления v5, таким образом, сбросив все пользовательский интерфейс вашего приложения обратно в элементы управления v5 или запутавшись с пользовательскими контекстами активации (звучит беспорядочно).
Итак, я ищу альтернативный контроль. Может ли кто-нибудь рекомендовать собственный/C++/MFC-элемент управления, который предоставляет что-то подобное, но который позволяет мне настроить общий размер шрифта? Я использую шрифт большего, чем обычно, в диалоговом окне и всех других элементах управления, и он отлично выглядит, за исключением этого элемента управления календарем. Пока что мой первоначальный поиск не принес ничего, что похоже на решение.
приятно! Похоже, это может сделать именно то, что мне нужно. Я проверю и посмотрю, что будет завтра. – Nerdtron
Интересно, что он говорит «указывая пустую строку», но при этом предоставляет непустую строку в качестве примера. Их пример L "", который содержит одно пространство. Кажется, что не работает, но я все еще пытаюсь выяснить, какую комбинацию NULL и L "или L" использовать и для какого из двух аргументов: – Nerdtron
Вот пример использования SetWindowTheme для удаления визуальных стилей, и кажется, что они пропускают пустую строку для обоих аргументов (http://www.logix-controls.com/SwiftForth/XP-Themes/Using%20Windows%20XP%20Visual%20Styles.txt). Конечно, здесь, как и в документах MSDN, «пустая строка» выглядит как непустая строка с одним пробелом, поэтому я предполагаю, что это то, что предназначено. Кажется, что это не работает. – Nerdtron