powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Соображения по поводу шрифтов в различных OS
9 сообщений из 9, страница 1 из 1
Соображения по поводу шрифтов в различных OS
    #36606497
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Соображения по поводу шрифтов в различных OS
    #36607261
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Эта TextWidth такая умная что-ли? Что знает тип шрифта, ширину которого она выясняет?
Или знает, чет из ее конструкции это не следует...??Зато из вопроса следует, что использовать Object Browser вы толком не научились.
TextWidth является членом формы и юзерконтрола, она ориентируется на соответствующий шрифт.
...
Рейтинг: 0 / 0
Соображения по поводу шрифтов в различных OS
    #36607323
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
ну т.е.хотите сказать, что якобы будет (ну и криво же она это делает с этими дельтами) ориентироваться на замененный шрифт кот. в случае Висты Segoe UI 9?

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

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

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

Просто уже честно начал подумывать прописывать это для всех контролов...
Одно дело один Treeview+ пара ListView, но есть еще куча Labels и т.п. Если делать как я описал, то это большая, пусть рутинная работа. Но если можно автоматически, то было бы здорово, расскажите.
...
Рейтинг: 0 / 0
Соображения по поводу шрифтов в различных OS
    #36607735
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Измените шрифты в настройках темы и посмотрите, как это отразится на программе. Все, что поменялось, не трогаете. Поменяется скорее всего не много.
...
Рейтинг: 0 / 0
Соображения по поводу шрифтов в различных OS
    #36607740
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело в том, что когда делали VB 6/5 ещё ничего не было известно ни о каких темах в ОС.
...
Рейтинг: 0 / 0
Соображения по поводу шрифтов в различных OS
    #36607804
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Соображения по поводу шрифтов в различных OS
    #36610140
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий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
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Соображения по поводу шрифтов в различных OS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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