Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Соображения по поводу шрифтов в различных OS / 9 сообщений из 9, страница 1 из 1
30.04.2010, 02:58
    #36606497
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
VB как известно использует шрифт MS Sans Serif 8 для стандартных элементов (стандартный также для классического интерфейса).
До сих пор меня это устраивало.
Но..на Висте то шрифт другой: Segoe UI 9
Тут же вопрос: а на XP-стиле? присмотревшись, возникло подозрение что другой. какой?

Накатал пока так:
Код: plaintext
1.
2.
3.
4.
    If IsWinVista And ThemesEnabled(TreeView1.hwnd) Then 'стиль для Висты
        TreeView1.Font.name = "Segoe UI" 'xp-MS Sans Serif 8
        TreeView1.Font.Size =  9 
        SetWindowTheme TreeView1.hwnd, StrPtr("explorer"),  0 
...
аналогично пока для Listview и Statusbar...
понравилось

подход правильный? он предполагает мое знание нужного шрифта... Или правильнее доставать текущий системный? а надо ли? если да то как?
Типа так что ли...???..
Код: plaintext
1.
    lRet = SendMessage(hWndParent, WM_GETFONT,  0 ,  0 )
    SendMessage hStatusBarWnd, WM_SETFONT, lRet,  0 

понаблюдав за родными, заметим, вистовскими приложениями обратил внимание что они себя не очень этим утруждают, т.е. при переключении на классику на Висте explorer-менюшки вроде MS Sans Serif, а прога лепит Segoe UI (даже после перезапуска) но точно не MS Sans Serif . В смысле надежен ли мой метод?

Идея собственно возникла вот из чего. Воткнул в Treview 32-битные картинки-красота...взял из Висты, типа высокие folder icons с прибамбасами. Но мне не понравился интервал между Nodes (налеплено). К счастью догадался что это определяется шрифтом ( или все же нет?, API для увеличения V-интервалов между нодами я не искал, так как догадка пришла ранее).

Ну и вот еще вопрос с этим связанный (вывод как примечание чего не видно).
Код: plaintext
1.
2.
3.
         If (ListView1(Index).ColumnHeaders(m_lCurSubItemIndex +  1 ).Width -  170 ) < _
          TextWidth(ListView1(Index).ListItems(m_lCurItemIndex).SubItems(m_lCurSubItemIndex)) Then
            TT.TipText = ListView1(Index).ListItems(m_lCurItemIndex).SubItems(m_lCurSubItemIndex) 
            TT.Create ListView1(Index).hwnd

На Висте эта дельта (кот.-170) должна быть скорее всего еще больше.
Каюсь, оставил глючное ColumnHeaders.Width, хотя знаю как через API (но при сохранении вроде корректную ширину дает, если ошибся то не прав сильно)....

Только вот вопрос:
Эта TextWidth такая умная что-ли? Что знает тип шрифта, ширину которого она выясняет?
Или знает, чет из ее конструкции это не следует...??
...
Рейтинг: 0 / 0
30.04.2010, 12:56
    #36607261
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
Дмитрий77Эта TextWidth такая умная что-ли? Что знает тип шрифта, ширину которого она выясняет?
Или знает, чет из ее конструкции это не следует...??Зато из вопроса следует, что использовать Object Browser вы толком не научились.
TextWidth является членом формы и юзерконтрола, она ориентируется на соответствующий шрифт.
...
Рейтинг: 0 / 0
30.04.2010, 13:16
    #36607323
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
Antonariy,
ну т.е.хотите сказать, что якобы будет (ну и криво же она это делает с этими дельтами) ориентироваться на замененный шрифт кот. в случае Висты Segoe UI 9?

В случае XP вроде я разобрался, что родной таки Tahoma 8, а не Ms Sans Serif 8.
Его наверно и на классике лучше применять.

Системный думаю лучше не запрашивать, юзер может зачем-то установить непотребство, и тогда будут такие глюки, что никакая отработка всего и вся не поможет.
...
Рейтинг: 0 / 0
30.04.2010, 14:13
    #36607510
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
Она будет ориентироваться на свойство Font формы или юзерконтрола, в контексте которого вызвана. Как оно меняется в процессе работы, я не в курсе.

Я думаю, лучше не трогать умолчания и позволить манифесту самому разобраться что менять, а что нет.
...
Рейтинг: 0 / 0
30.04.2010, 15:02
    #36607659
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
AntonariyЯ думаю, лучше не трогать умолчания и позволить манифесту самому разобраться что менять, а что нет.
О-па..А можно с этого места чуть поподробнее? Как манифест влияет на шрифты. Я что-то не заметил...Т.е. я чего-то не знаю, объясните, м.б. пример.
Стили да, но шрифт VB-default ms sans serif 8 на всех с-мах для всех контролов.

Просто уже честно начал подумывать прописывать это для всех контролов...
Одно дело один Treeview+ пара ListView, но есть еще куча Labels и т.п. Если делать как я описал, то это большая, пусть рутинная работа. Но если можно автоматически, то было бы здорово, расскажите.
...
Рейтинг: 0 / 0
30.04.2010, 15:36
    #36607735
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
Измените шрифты в настройках темы и посмотрите, как это отразится на программе. Все, что поменялось, не трогаете. Поменяется скорее всего не много.
...
Рейтинг: 0 / 0
30.04.2010, 15:38
    #36607740
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
дело в том, что когда делали VB 6/5 ещё ничего не было известно ни о каких темах в ОС.
...
Рейтинг: 0 / 0
30.04.2010, 16:12
    #36607804
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
AntonariyПоменяется скорее всего не много.
Ну естественно в менюшках, диалоговых окнах, заголовках и т.п.шрифт следует за темой, здесь без проблем.
Konst_Oneдело в том, что когда делали VB 6/5 ещё ничего не было известно ни о каких темах в ОС.
много чего не было известно, но тем не менее даже вистовский стиль "Explorer" через API осиливается.

Ну т.е. никак...
Получается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if{Treview,ListView,Label,Textbox, Combobox и весь прочий набор}
 defFont="Tahoma 8"

If Vista
{
 fonf="Segoe UI 9";
}
elseif Win7
{
   //потом разберусь;
}
Ну так то разумно?
Что скажете. Ну не через API же этот шрифт запрашивать для каждого TextBox-а?итак кучу примитивных строк кода писать...
...
Рейтинг: 0 / 0
04.05.2010, 04:30
    #36610140
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соображения по поводу шрифтов в различных OS
Дмитрий77 в случае Висты Segoe UI 9?
В случае XP вроде я разобрался, что родной таки Tahoma 8, а не Ms Sans Serif 8.
Его наверно и на классике лучше применять.

Немножко подразобрался.
Для ListView + Headers, TreeView, StatusBar
XP: Tahoma 8
Vista: Segoe UI 9
Но: в стандартных простых элементах (Label,TextBox,Combo и т.п.) используется Ms Sans Serif 8.
Но: ни фига не Ms Sans Serif 8 а Microsoft Sans Serif 8
Дело в том что на XP Ms Sans Serif 8== Microsoft Sans Serif 8
а вот на Висте разница заметна, Microsoft Sans Serif 8 почетче и качественнее, чтоб ничего не менять, его и надо пользовать для указанных контролов.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Соображения по поводу шрифтов в различных OS / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]