размер шрифта в static control
От: Hippopotamus  
Дата: 27.10.04 11:21
Оценка:
хотел уменьшить размер шрифта static-элемента диалога
не получилось

код в ините диалога:
CFont fntNew;
CFont* fntOld;
LOGFONT lfFont;

fntOld = GetDlgItem(IDC_ADDON)->GetFont();
fntOld->GetLogFont(&lfFont);
lfFont.lfHeight = -6; // главное что меньше стандартного

fntNew.CreateFontIndirect(&lfFont));
GetDlgItem(IDC_ADDON)->SetFont(&fntNew);
fntNew.Detach();

результат танцов с бубном:
размер шрифта больше 8pnt — текст отображается как надо (увеличивается)
размер шрифта меньше 8pnt — текст отображается дефалтового размера (8pnt)
при изменении шрифт на Arial проблема исчезает (по умолчанию MS Sans Serif)

Вечерние чтения MSDN не помогли исправить загадочное поведение контрола.
Может кто знает что я делую не так или где может быть проблема?
Заранее спасибо.
Re: размер шрифта в static control
От: v_a_n_e_k  
Дата: 27.10.04 11:40
Оценка: 3 (1)
Здравствуйте, Hippopotamus, Вы писали:

H>хотел уменьшить размер шрифта static-элемента диалога

H>не получилось

H>код в ините диалога:

H> CFont fntNew;
H> CFont* fntOld;
H> LOGFONT lfFont;

H> fntOld = GetDlgItem(IDC_ADDON)->GetFont();

H> fntOld->GetLogFont(&lfFont);
H> lfFont.lfHeight = -6; // главное что меньше стандартного

H> fntNew.CreateFontIndirect(&lfFont));

H> GetDlgItem(IDC_ADDON)->SetFont(&fntNew);
H> fntNew.Detach();

H>результат танцов с бубном:

H> размер шрифта больше 8pnt — текст отображается как надо (увеличивается)
H> размер шрифта меньше 8pnt — текст отображается дефалтового размера (8pnt)
H> при изменении шрифт на Arial проблема исчезает (по умолчанию MS Sans Serif)

H>Вечерние чтения MSDN не помогли исправить загадочное поведение контрола.

H>Может кто знает что я делую не так или где может быть проблема?
H>Заранее спасибо.

Попробуй поставить вместо шрифта "MS Sans Serif" шрифт "Microsoft Sans Serif", т.к. последний TrueType
Re: размер шрифта в static control
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 27.10.04 11:40
Оценка: 2 (1)
Здравствуйте, Hippopotamus, Вы писали:

H>хотел уменьшить размер шрифта static-элемента диалога

H>не получилось

Из описания CreateFont():

nHeight
[in] Specifies the height, in logical units, of the font's character cell or character. The character height value (also known as the em height) is the character cell height value minus the internal-leading value. The font mapper interprets the value specified in nHeight in the following manner.


For all height comparisons, the font mapper looks for the largest font that does not exceed the requested size.

This mapping occurs when the font is used for the first time.

For the MM_TEXT mapping mode, you can use the following formula to specify a height for a font with a specified point size:

nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);


Все вышепроцитированное учитываете?
- Искренне ваш, Поросенок Пафнутий
Re[2]: размер шрифта в static control
От: Hippopotamus  
Дата: 27.10.04 14:27
Оценка:
Здравствуйте, v_a_n_e_k, Вы писали:

___>Попробуй поставить вместо шрифта "MS Sans Serif" шрифт "Microsoft Sans Serif", т.к. последний TrueType


Изменение шрифта на TrueType помогло.
Покапал еще в этом направлении и получилось:
"растерные шрифты масштабируются только в сторону увеличения"

из MSDN:

For example, when using raster fonts...If the logical font has a height of 8 and there is no font shorter than 10, the font with a height of 10 is chosen.


A raster font is sometimes also called a bitmap font, because each character is stored as a bitmap pixel pattern. Each raster font is designed for a specific aspect ratio and character size. Windows can create larger character sizes from GDI raster fonts by simply duplicating rows or columns of pixels. However, this can be done in integral multiples only and within certain limits. For this reason, GDI raster fonts are termed "nonscalable" fonts. They cannot be expanded or compressed to an arbitrary size


Спасибо.
Re[2]: размер шрифта в static control
От: Hippopotamus  
Дата: 27.10.04 14:31
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>...


Причина оказалась в том что шрифт растерный.
Спасибо за помощь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.