Как я могу сделать окно Win32 API более современным взглядом?

Я заказал Windows Fifth Edition Программирования несколько дней назад и начал работать с ним.

Я начинаю изучать win32 api, однако, я получил вопрос. Окна не смотрят современная перспектива/победа winxp/победы 7 стилей вообще. Как я фиксирую это?

Это в настоящее время похоже на это, загаженный шрифт и так далее.

enter image description here

Заранее спасибо!

Machiel

9
задан iKlsR 29 December 2013 в 00:34
поделиться

5 ответов

Чтобы получить правильный шрифт, вы должны вызвать это после CreateWindow (Ex) :

NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0);
HFONT hFont = ::CreateFontIndirect(&ncm.lfMessageFont);
::SendMessage(hwnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
12
ответ дан 4 December 2019 в 10:30
поделиться

По-видимому, вы на самом деле не читали книгу. Вы ищете WM_SETFONT . Есть причина, по которой общие элементы управления - не первое, о чем говорится в книге.

4
ответ дан 4 December 2019 в 10:30
поделиться

Вы можете проверить GetThemeSysFont , чтобы заполнить LOGFONT подходящим системным шрифтом, создать его с помощью CreateFontIndirect и WM_SETFONT , чтобы назначить его каждому элементу управления, который вы создаете.

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

2
ответ дан 4 December 2019 в 10:30
поделиться

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

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

Кроме того, в наши дни большая часть пользовательского интерфейса не разрабатывается с использованием кода в стиле SDK, его очень сложно программировать / поддерживать, вместо этого используйте какую-то библиотеку пользовательского интерфейса, по крайней мере, MFC.

0
ответ дан 4 December 2019 в 10:30
поделиться

Вам необходимо установить шрифт для каждого элемента управления с помощью WM_SETFONT , вы создаете шрифт, передав NONCLIENTMETRICS .lfMessageFont в CreateFontIndirect (используйте SystemParametersInfo (SPI_GETNONCLIENTMETRICS, ...) для получения NONCLIENTMETRICS)

Для диалоговых окон используется псевдошрифт « MS Shell Dlg « @ 8pt на = Vista

2
ответ дан 4 December 2019 в 10:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: