Масштабирование шрифта на уровне Windows

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Масштабирование шрифта на уровне Windows

Сообщение Tarantul » 10.09.2005 (Сб) 14:54

Каким образом можно узнать установленный в Windows размер шрифта (Рабочий стол -> Свойства -> Параметры -> Дополнительно -> Общие -> Масштаб шрифта) :?:

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 10.09.2005 (Сб) 15:50

GetSystemMetrics?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 10.09.2005 (Сб) 17:53

На врядли. А если да, то какая именно константа запроса?

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 13.01.2006 (Пт) 21:14

Что, никто не знает?

GSerg, ты где :D :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2006 (Сб) 6:54

Ну не знаю... :roll:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q152136, к примеру... Но это лажа полная, о чём там и написано...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.01.2006 (Сб) 17:45

А зачем тебе это знать?
Можно смотреть значение Screen.TwipsPerPixel*, они зависят от масштаба.
Lasciate ogni speranza, voi ch'entrate.

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 14.01.2006 (Сб) 18:18

Но это лажа полная, о чём там и написано...

Это почему? Отличная идея. Отслеживать относительное увеличение шрифта по Default'ному. Потом эти значения можно использовать для обратного масштабирования своего шрифта ( штобы его размер не зависел от параметров Windows)


Вообще, у меня сейчас стоит масштабирование шрифтов 125% + сглаживание. И сразу видно, что многие программы на это не расчитаны. Сразу текст вылазит за рамки, несоответственные размеры окон... В общем сразу видно отличие профессиональных программ от любительских :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.01.2006 (Сб) 18:33

Tarantul писал(а):В общем сразу видно отличие профессиональных программ от любительских :)

Чтобы на программу можно было налепить значок "Designed for MS Windows", программа должна удовлетворять ряду требований. Корректная работа при разных масштабах шрифта считается одним из самых сложных.
Lasciate ogni speranza, voi ch'entrate.

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 14.01.2006 (Сб) 19:33

После того, как у меня появился ЖК - монитор и масштаб 125%, все программы делаю шрифто-независимыми. Ничего особенно сложного нет... Ряд определенных мер, и все. Если работать в VB с твипами, то никаких проблем нет. Когда переходишь на пиксели, то они начинаються. В частности, VB в зависимости от размера шрифта автоматически масштабирует формы. При этом их размеры в твипах остаються без изменений, а пиксельные меняються. Меняется и соотношение TwipsPerPixelX и TwipsPerPixelX. Поэтому иногда приходиться задавать размеры формы програмно в пикселелях через MoveWindow(). Пример такой программы - редактор к игре "SpaceShip Unleashed", выложенной в проэктах.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 15.01.2006 (Вс) 10:16

А вот тут пробовал смотреть (для 9X):
HKEY_LOCAL_MACHINE\Config\0001\Display\Settings
или:
HKEY_CURRENT_CONFIG\Display\Settings

(для NT):
HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
Парметр AppliedDPI


Платформу определяй через GetVersionEx, и читай из реестра.
Нет ничего невозможного для человека с интеллектом.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 191

    TopList