powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как решить проблему с кракозябрами у кнопки Toolbar-а
28 сообщений из 28, показаны все 2 страниц
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40008560
Игорь1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет свойства Font конкретно у этого объекта Toolbar.

И вообще, как правильно находить и решать подобные проблемы прямо из кода универсально?
Может быть, и у вкладки не будет видно русских символов, а будет что-то подобное... и у прочих Label-контролах.
С приходом Windows10 подобные проблемы стали очень часто вылезать. Нет ли у кого универсального решения?

Заранее благодарен.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40008620
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь1973,

Что за тулбар? Этих тулбаров как собак нерезанных. Если что то самописное, то сразу в топку.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40008654
Игорь1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Microsoft - овский стандартный.
Microsoft Windows Common Controls-2 6.0 (SP6)
mscomct2.ocx
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40008670
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное юникод в него пишешь.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40008703
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте что-то отсюда: Как исправить отображение кириллицы или кракозябры в Windows 10
вдруг поможет
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40008737
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist
Попробуйте что-то отсюда: Как исправить отображение кириллицы или кракозябры в Windows 10
вдруг поможет


Не поможет. Не надо фигню советовать.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40009663
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь1973
Microsoft - овский стандартный.
Microsoft Windows Common Controls-2 6.0 (SP6)
mscomct2.ocx

Microsoft - овский стандартный - это
Microsoft Windows Common Controls 5.0 (SP2)
COMCTL32.OCX
Пора бы уж это давно знать, раз на VB6 еще пишите.
А то что вы используете - это чисто VB поделка, оставшаяся в классическом интерфейсе Win98. Стили через манифесты даже не примените.
Eolt
The_Prist
Попробуйте что-то отсюда: Как исправить отображение кириллицы или кракозябры в Windows 10
вдруг поможет

Не поможет. Не надо фигню советовать.

Не фигня. И возможно поможет. Но поставить русский для НЕ-Юникод в настройках OS по-любому надо, если уж VB6, да и вообще. Без этого много где крякозябры будут. Опыт(C).
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40009725
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Какие нафиг настройки системы? У человека проблема в том, что он пишет Unicode текст в контрол, который юникод не поддерживает.
Вот и все.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40009877
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt
он пишет Unicode текст в контрол, который юникод не поддерживает.

А где у ТС написано что он туда Юникод пишет? Это Вы так за него решили.
Он сидит себе в конструкторе VB и пишет русский текст из кода не задумываясь, у него на машине все работает.
А в настройках target machine стоит вдруг английский для НЕ-юникод, вот и крякозябры.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40010134
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Битва экстрасенсов :D
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40011839
Игорь1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартный тулбар VB6.
Кнопка "ДОБАВИТЬ"
Свойств для изменения шрифта нет.
Наверное, можно вызовом API-функции какой-нибудь изменить.
Кракозябры в под Windows2003Server

А вообще - как определять, что у пользователя кракозябры появились?

If btnAppend.Caption = "ÄÎÁÀÂÈÒÜ" Then

End If

или

If Left(btnAppend.Caption, 1) LIKE "[А-я]*" Then
'нет кракозябр
Else
'есть кракозябры
End If

Заранее спасибо за любую помощь :)
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40011979
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь1973
Стандартный тулбар VB6.
Кнопка "ДОБАВИТЬ"
Свойств для изменения шрифта нет.


Ясно, значит я перепутал тулбары.

авторНаверное, можно вызовом API-функции какой-нибудь изменить.


Изменение шрифта контрола можно выполнить посылкой сообщения WM_SETFONT


авторКракозябры в под Windows2003Server

Значит видимо в этой Windows2003Server нет шрифта который используется по-дефолту в VB6.
По-моему это Tahoma или MS Sans Serif. Можно включить его в инсталлятор и ставить в Win2003.

Еще вариант, программно определять версию ОС и при запуске в Win2003 и вместо текста выводить битмапки на которых написан текст. Костыль конечно, но работать будет.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013157
Integrator2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как правильно использовать эту функцию WM_SETFONT
учитывая, что тулбар содержится в UserControl (нет события Form_Load) ?
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013159
Integrator2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Дмитрий77#22216436]
Игорь1973
Microsoft - овский стандартный.
Microsoft Windows Common Controls-2 6.0 (SP6) mscomct2.ocx - фигня, поделка
Microsoft Windows Common Controls 5.0 (SP2) - Microsoft - овский стандартный

А нельзя ли получить дополнительную инфу по этому поводу?
Вроде бы, если верить цифрам, то 6 больше чем 5. И SP6 больше чем SP2
Не проясните ли этот момент? Заранее благодарю)
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013175
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Integrator2
А как правильно использовать эту функцию WM_SETFONT


Через SendMessage. Что то типа:

Call SendMessage(hwnd, WM_SETFONT, hFont, 0)

hwnd - хендл окна в котором устанавливаем шрифт
hFont - хендл шрифта
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013177
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Integrator2#22223117]
Дмитрий77
пропущено...

А нельзя ли получить дополнительную инфу по этому поводу?
Вроде бы, если верить цифрам, то 6 больше чем 5. И SP6 больше чем SP2
Не проясните ли этот момент? Заранее благодарю)


Использовать надо Microsoft Common Controls 6.0 (SP6). Это последняя версия из SP6 в которой пофиксены некоторые баги предыдущий версий.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013630
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt
Integrator2А нельзя ли получить дополнительную инфу по этому поводу?
Вроде бы, если верить цифрам, то 6 больше чем 5. И SP6 больше чем SP2
Не проясните ли этот момент? Заранее благодарю)

Использовать надо Microsoft Common Controls 6.0 (SP6). Это последняя версия из SP6 в которой пофиксены некоторые баги предыдущий версий.
Вот честно пытался искать место на этом форуме (к сожалению не нашел), где мне это один раз 10 лет назад объяснили почему надо использовать Common Controls 5.0 а не 6.0, чего я усвоил один раз.

Суть такова.
Common Controls 5.0 - это надстройка над системными API. При применении манифеста ваши контролы будут использовать стиль OS на которой запущена прога, т.е. ваша прога на Win10 (а также на будущих Win11 и Win12) будет выглядеть современно в соответствии со стилем OS на которой запущена .

Common Controls 6.0 - это тупиковая вещь в себе, написанная в 98г. для VB6 или в духе того, и независимо от наличия манифеста все кнопки будут выглядеть в классическом стиле как на Win98. Они даже для XP не годятся в этом смысле.
И не удивлюсь что баги со шрифтами растут из этих же Common Controls 6.0.

Я бы однозначно посоветовал начать с замены Common Controls 6.0 -> Common Controls 5.0
И совет с "настройками OS для НЕ-ЮНИКОД" отнюдь не тупой.

А любые "баги" в Common Controls 5.0 можно легко подправить через API.
API вроде как и к Common Controls 6.0 применяются, но манифесты стилей вы к ним не примените никогда.

Eolt, судя по вашим постам вы вроде умный человек, и странно что вы этой фишки не знаете.

EoltЗначит видимо в этой Windows2003Server нет шрифта который используется по-дефолту в VB6.
По-моему это Tahoma или MS Sans Serif. Можно включить его в инсталлятор и ставить в Win2003.

Еще вариант, программно определять версию ОС и при запуске в Win2003 и вместо текста выводить битмапки на которых написан текст. Костыль конечно, но работать будет
Не обижайтесь, но чушь.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013691
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Не согласен с вами.

Windows Common Controls 5.0 разрабатывался еще для VB5. Для совсем старой версии comdlg32.dll

В 5.0 нет следующий контролов которые есть в 6.0:

  • ImageCombo
  • MonthView
  • FlatScrollBar
  • UpDown
В 6.0 были пофиксены баги которые были в старой версии.

И самое важное, Windows Common Controls 5.0 больше не поддерживается Microsoft и с любым обновлением эти контролы могут перестать работать, как описано здесь

У версии 6.0 наоборот, есть официальная поддержка Microsoft. Пока MS будет поддерживать рантайм VB6 в новых версиях Windows, будет поддерживаться и Windows Common Controls 6.0.
А значит есть гарантия, что приложение не умрет с очередным обновлением винды.

Про стили я конечно знаю, но считаю это совсем незначительным моментом.

авторНе обижайтесь, но чушь.

На техническом форуме недостаточно сказать, что кто-то пишет чушь. Приведите свои аргументы. Если они конечно есть :)
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013695
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторCommon Controls 6.0 - это тупиковая вещь в себе, написанная в 98г.

Диалог About говорит совсем о другом. Версия 5.0 была написана еще до выхода Windows 98
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013745
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt
автор

Диалог About говорит...
Диалог About говорит о том, что все эти контролы были написаны 20+ лет назад.
И ни тот ни другой (ActiveX контролы) уже очень давно официально не поддерживаются.

Microsoft Windows Common Controls 5.0 (SP2) == comctl32.ocx+comct232.ocx
Microsoft Windows Common Controls-2 6.0 (SP6) ==mscomctl.ocx+mscomct2.ocx+comct332.ocx
Все это ссылается (и 5.0 и 6.0) на comctl32.dll
Только так уж получилось, что сделанное в 5.0 поддерживает стили через манифесты,
а в 6.0 - не поддерживает.
И хотя бы поэтому 5.0 - хорошо, а 6.0 - плохо.
А UpDown и через API можно нарисовать.

EoltПро стили я конечно знаю, но считаю это совсем незначительным моментом.
Ну как сказать, смотря какие цели. От того как выглядит кнопка на то что она делает конечно не влияет.
Но мне бы было стыдно в 20-м году толкать свой продукт с тулбарами и кнопками в классическом стиле Win95/98.
А вот на чем он написан на VB6, C/C++ или .NET пользователю в принципе неважно.

EoltНа техническом форуме недостаточно сказать, что кто-то пишет чушь. Приведите свои аргументы. Если они конечно есть :)
Про вставить картинку вместо текста я лучше промолчу.
Про отсутствие каких-то шрифтов в вот именно Win2003 - это вряд ли.
У меня все VB6 проги написаны так, что они всегда работают от XP до Win10.
И единственное решение (если вдруг крякозябры на русском тексте в VB6) - это да пойти в настройки OS и проверить что стоит русский для НЕ-Юникод - и это всегда работает.

Вообще я на VB6 с 14-го года ничего не пишу, в VB.Net как бы таки удобней, все API применяются точно также. Есть ньюансы, пришлось привыкать. Но опыт с VB6 как бы очень большой, чтобы дать разумный совет не использовать те ActiveX которые в VB обозваны как "Microsoft Windows Common Controls 6.0".
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013766
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77

Диалог About говорит о том, что все эти контролы были написаны 20+ лет назад.
И ни тот ни другой (ActiveX контролы) уже очень давно официально не поддерживаются..


Неправду пишите. SP 6 поддерживается, смотрите ссылку в предыдущем посте.
Более того есть заявление Microsoft о политике в отношении VB6. Там черным по-белому задекларирована поддержка run-time библиотеки
и визуальных компонентов (Common Controls из ссылки выше) до 2027 года.

Поддержка, если вы не знаете что это, означает обязательное тестирование всех обновлений ОС с данным компонентом.
А в случае если все таки обновление сломает компонент, Майкрософт его восстановит хотфиксом.

Вы же советуете версию, которая уже много лет никем не поддерживается. Более того, содержит в себе критические баги

Любое новое обновление системы может сломать не поддерживаемый компонент. И все ваши проекты разом перестанут работать.
Если пользователей сотни и тысячи, это просто катастрофа для разработчика и потеря доверия пользователей.
Придётся срочно все переписывать с новой версией Common Controls или использовать что-то другое.


авторИ хотя бы поэтому 5.0 - хорошо, а 6.0 - плохо.


Плохо рассуждать о предмете в котором не разбираешься.


авторНу как сказать, смотря какие цели. От того как выглядит кнопка на то что она делает конечно не влияет.
Но мне бы было стыдно в 20-м году толкать свой продукт с тулбарами и кнопками в классическом стиле Win95/98.

Тулбар в SP6 он в стиле стандартном Win32. С плоскими кнопками выглядит совсем обычно.

Если по-зарез нужны стили, можно попробовать опенсорсный CommonControls c vbforums.com
Он хоть и глючный еще, но зато есть Unicode, DPI, стили, и много новых свойств.
Для некоторых проектов вполне сойдет.


авторПро вставить картинку вместо текста я лучше промолчу.


Там явно у человека квалификация низкая. Раз он путается в таком простом вопросе.
И программно инсталлировать нужный шрифт он не сможет. Картинка для него будет простым выходом.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40013838
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt,
какой-то спор получается ни о чем, продолжать и тратить время не очень охота.

Common Controls они как бы одни,
и все описано в документации Microsoft.
About Common Controls
Control Library

Все те "версии" о чем мы тут говорили (Microsoft Windows Common Controls 6.0 / 5.0), включая очевидно ваш OpenSource это версии прибамбасов-надстроек, которые используются чтоб "дурак нарисовал в конструкторе" и не создавал с нуля через API.
И если че-то с контролом не так (поведение не соответствует, API как должно не применяются, стили не работают), то это баг прибамбаса.

Изначально в VB6 я использовал прибамбас Microsoft Windows Common Controls 6.0 (типа самые новые).
Но когда я стал задумываться о том как мое приложение смотрится и т.п., встал вопрос о "стилях" и "манифестах",
то всплыл баг в прибамбасе Microsoft Windows Common Controls 6.0 (категорическая неподдержка стилей),
и я навсегда отказался от этого прибамбаса в пользу Microsoft Windows Common Controls 5.0, где этот принципиальный баг отсутствует, а весь прочий функционал прекрасно допиливается через API ссылки на которые я дал в начале сообщения.

Моя задача по внешнему виду контрола чтоб он выглядел "системно, стандартно и профессионально" на любой OS а не "курица лапой". Так вот "Microsoft Windows Common Controls 6.0" - это "курица лапой". А "Microsoft Windows Common Controls 5.0" напротив прекрасно допиливается до "системно, стандартно и профессионально", если уж продолжаете писать на древнем VB6.

Если стили не нужны (итак сойдет), в API лезть неохота/неумею, а VB6 самый лучший навеки, то тогда да, поем оду самой свежей и прогрессивной версии прибамбаса 6.0 от 1995-2000 года выпуска с кучей новых функций и кучей "исправленных багов", которая еще оказывается официально поддерживается аж до 2027г.

Для меня лично все это в далеком прошлом, т.к. пишу на .NET
где свои прибамбасы-контролы со своими заморочками и глюками, хотя суть все те же 2 ссылки что я дал вначале и все допиливания делаются через те же классические API.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40019131
Игорь1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, дорогие)) Очень много нового узналось, и будет полезно всем.
Но только вот - не получилось применить функцию WM_SETFONT
Те примеры, которые находил в инете, не срабатывали. Шрифт не менялся у тулбара.
Может ли кто-нибудь конкретный рабочий пример использования этой функции показать?

Я пробовал это

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Public Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Public Const LFFACESIZE = 32
Public Type LOGFONT
    lfHeight As Long
    lfWidth As Long
    lfEscapement As Long
    lfOrientation As Long
    lfWeight As Long
    lfItalic As Byte
    lfUnderline As Byte
    lfStrikeOut As Byte
    lfCharSet As Byte
    lfOutPrecision As Byte
    lfClipPrecision As Byte
    lfQuality As Byte
    lfPitchAndFamily As Byte
    lfFaceName(LFFACESIZE) As Byte
End Type
Public Const WMGETFONT As Long = &H31
Public Const WMSETFONT As Long = &H30

    Dim hFont As Long
    Dim lResult As Long
    Dim oFont As LOGFONT
    
    oFont.lfWeight = 900
    oFont.lfUnderline = True
    oFont.lfHeight = 50
    
    hFont = CreateFontIndirect(oFont)
    
    lResult = SendMessage(oObject.hwnd, WMSETFONT, hFont, 0&)
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40019310
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с тулбаром будет трудно, там релизить нужно на контексте рисования, а этот тулбар постоянно рефрешит его.

ps
вот проект ocx-тулбара, там есть примеры рисования своим шрифтом
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40019315
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40024669
Игорь1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблему со шрифтом штатного тулбара от Microsoft нужно обязательно разобрать и как-то решить, ребята..
Не понятно, почему такое вообще происходит. Может, это один из "невидимых инструментов" Микрософта, трубующих обязательного апгрейда всего, чтоб ни кто не засиживался на старье? Да, VisualBasic6.0 стар.
Причем на более старых ОС (Windows7) этой проблемы нет. Проблема только на самых последних (Windows10 не у всех клиентов, WindowsServer 2019 -стабильная проблема).

За ссылку на другой тулбар, конечно, спасибо. Но только вот... поддерживает ли он меню ниспадающее (как это может делать штатный тулбар от Microsoft), и вообще - это очень хлопотное дело все равно - менять тулбар. Потом позже полностью переедем на .NET
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40024737
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь1973,

Посмотри опенсорсный CommonControls . Там есть поддержка Unicode и он аналог майкрософтовского CommonControls.
...
Рейтинг: 0 / 0
Как решить проблему с кракозябрами у кнопки Toolbar-а
    #40050328
Игорь1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за предоставленные варианты и ссылки на другие тулбары.
Выяснилось, что проблема с кракозабрами у стандартного тулбара Microsoft возникает только на ОС Windows 2003 Server.
В данной ОС много чего отключено по умолчанию (сервисы) и шрифтов тоже может не хватать каких-то стандартных. То ли Tahoma то ли какого-то другого... Если кто-то конкретно знает, какого шрифта нет в Windows 2003 Server, то дайте знать, пжл.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как решить проблему с кракозябрами у кнопки Toolbar-а
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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