Консультация № 182868
16.04.2011, 23:47
62.55 руб.
0 4 1
Здравствуйте! Прошу помощи в следующем вопросе:
Столкнулся с такой проблемой неверного отображения русских букв на компьютерах клиентов, на которых установлена урезанная Windows XP

Вопрос: Возможно ли при разработке программы на Visual Basic 6.0 задать конкретным элементам управления (в частности Toolbar, Menu, всплывающим подсказкам и т.п.) конкретные шрифты, которые будут правильно отображаться в урезанном Windows?
То, что разные элементы используют разные шрифты, некоторые из которых отображаются без проблем, видно на приложенных скриншотах.

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

Обсуждение

Неизвестный
17.04.2011, 02:39
общий
Достаточно выделить все элементы формы посредством комбинации клавиш (Ctrl + A), найти в списке Properties строчку Font и установить значение требуемого шрифта выбрав из предлагаемого перечня тот, который зарекомендовал себя наилучшим образом.
Неизвестный
17.04.2011, 07:44
общий
беда в том, что у ToolBar или Menu НЕТ свойства Font... По крайней мере я не нашел, где определяется шрифт этих элементов...

Неизвестный
17.04.2011, 10:08
общий
Для сложных случаев есть функция SystemParametersInfo с первым параметром - SPI_GETNONCLIENTMETRICS или SPI_SETNONCLIENTMETRICS. См. описание структуры NONCLIENTMETRICS.
Неизвестный
18.04.2011, 08:30
общий
это ответ
Здравствуйте, Perkussi!
Действительно, для многих элементов отсутствует возможность изменения шрифта. Глобальной настройки шрифтов для программы также нет, т.к. в данном случае используются стандартные настройки Windows.
Вариантов решения несколько:
1) Использовать вместо стандартных наборов элементов управления готовые альтернативные варианты, как например HookMenu или vbaccelerator.
2) Использовать функцию NONCLIENTMETRICS. Пример ее использования с комментариями есть ЗДЕСЬ (текст на английском). Учтите, что при этом шрифт изменится во всех программах.
Есть также варианты вроде вставки картинки с надписью вместо надписи, но на мой взгляд это совсем плохой вариант (URL >>)
Форма ответа