Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49

Шрифт и GroupBox

19.03.2018, 20:27. Показов 1823. Ответов 14

Студворк — интернет-сервис помощи студентам
Всем доброго времени.

Столкнулся с такой проблемой, что по какой-то причине нельзя изменить шрифт одного из GroupBox-ов. Тут даже не важно, какого из двух - дочернего, или родительского. Один из них в любом случае будет отображаться так, будто шрифт у него не установлен.

Собственно, GroupBox-ы создаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
hGroupBox1 = CreateWindowEx(WS_EX_TRANSPARENT, TEXT("BUTTON"),
    TEXT("GroupBox1:"),
    WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
    176, 2,
    316, 100,
    hWindow, NULL, hInstance, NULL
);
SendMessage(hGroupBox1, WM_SETFONT, (WPARAM)hFont, 0);
 
hGroupBox2  = CreateWindowEx(WS_EX_TRANSPARENT, TEXT("BUTTON"),
    TEXT("GroupBox2:"),
    WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
    8, 21,
    300, 58,
    hGroupBox1, NULL, hInstance, NULL
);
SendMessage(hGroupBox2, WM_SETFONT, (WPARAM)hFont, 0);
А шрифт так:
C++
1
2
3
4
5
6
7
8
hFont = CreateFont(
    -11, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
    DEFAULT_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    PROOF_QUALITY,
    DEFAULT_PITCH | FF_DONTCARE, TEXT("MS Sans Serif")
);
Скриншот, как выглядит это безобразие, прилагаю.

Примечательно еще то, что ширина заголовка с неверно отображающимся шрифтом точно говорит о том, что шрифт установлен, т.к. заголовок "обрезан" ровно до того момента, где должен оканчиваться последний символ, если бы шрифт был установлен и отображался бы правильно. Значит ли это, что баг в отображении шрифта?

Может кто сталкивался с подобным? И как это решается? Думал сабклассить, но... какое конкретно сообщение и команду обрабатывать?
Миниатюры
Шрифт и GroupBox  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2018, 20:27
Ответы с готовыми решениями:

ComboBox и GroupBox. Как правильно деактивировать GroupBox?
Как правильно сделать так, чтобы при выборе определённого пункта из менюшки ComboBox и нажатии кнопки, доступным становился нужный...

Как в консоли автоматически выбрать шрифт Lucida Console, а не точечный шрифт?
Например №36 (размер шрифта 22х36).

Как редактировать текст другим шрифтам, не меняя основной шрифт текста и не переключая шрифт каждый раз
В общем проблема такая, есть документ в шрифте Х, который трогать не надо, в некоторых строках надо сделать перевод другим шрифтом У...

14
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,120
19.03.2018, 22:28
У меня всё работает. Нужно весь код смотреть, может в чём-то другом причина. Есть такой момент, что фонт не копируется в окно, а используется как указатель. То есть фонт после установки не должен удаляться, а должен существовать всё время существования окна. Возможно в этом проблема.
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
19.03.2018, 22:58  [ТС]
Собственно, это и есть код одной функции. Шрифт уничтожается при закрытии программы.
Проблема не видна, если не добавлять манифест в проект. С манифестом - проблема есть.
Накидал на скорую руку демку, надеюсь, поможет (VS 2017).
Вложения
Тип файла: 7z project.7z (2.8 Кб, 6 просмотров)
0
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,120
20.03.2018, 00:00
Цитата Сообщение от Xo66um Посмотреть сообщение
Проблема не видна, если не добавлять манифест в проект. С манифестом - проблема есть.
C++
1
#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Да, с таким манифестом как-то криво работает. Без него, всё правильно показывает. Не знаю, что подсказать, с манифестами не разбирался никогда.
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
20.03.2018, 00:09  [ТС]
Досадно очень, ведь проблема актуальна, а решений нет вообще нигде, или я плохо искал...
Тоже не знаю, что делать. От манифеста отказываться - не вариант, хотя можно попробовать иначе манифест подключить к проекту, помню, были какие-то способы.
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
21.03.2018, 11:18
Цитата Сообщение от Xo66um Посмотреть сообщение
хотя можно попробовать иначе манифест подключить к проекту
в ресурсах
C++
1
1 24 "путь к файлу манифеста"
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
21.03.2018, 14:36  [ТС]
Пробовал подключать манифест как ресурс, пробовал настраивать генерацию... Разные настройки манифестов даже пробовал. Все одно: с манифестом один из GroupBox-ов (родительский или дочерний) неправильно отображает шрифт. Даже не знаю, что еще можно сделать с этим.
0
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,120
21.03.2018, 14:58
Не делать родителем кнопки другую кнопку. Вы уверены, что вам нужно такое нестандартное дерево окон?
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
21.03.2018, 17:57  [ТС]
Цитата Сообщение от Ygg Посмотреть сообщение
Не делать родителем кнопки другую кнопку. Вы уверены, что вам нужно такое нестандартное дерево окон?
Дочерний GroupBox, да, обязателен. Но не делать одно из них родителем - как вы себе это представляете? Указать всем родителя - главное окно? Тогда при событии WM_MOUSEMOVE над "родительским" контролом он переместится наверх, перекрыв тем самым своего "потомка". Или есть другие способы?
0
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,120
21.03.2018, 19:03
Xo66um, я не понимаю, что вы хотите сделать)
Обычная практика создания диалогов - размещение всех элементов внутри одного родителя. GroupBox ничего при этом не закрывает внутри соей рамки. Да и все специфичные сообщения от элементов отправляются вроде как именно родителю, так что всё логично с одним родителем.
Кликните здесь для просмотра всего текста
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
21.03.2018, 19:15  [ТС]
Спойлер пустой, и картинки не видно...

Я так и не понял вашего предложения о размещении контролов - кто конкретно должен, по вашему мнению, выступать в роли родителя? Можно чуть подробнее?
0
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,120
21.03.2018, 19:22
Если вам просто нужен набор контролов, часть которых визуально расположена внутри одного или нескольких GroupBox, то у всех контролов родитель должен быть один. (Картинка ещё раз, что-то с ней не так было)
Миниатюры
Шрифт и GroupBox  
0
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
21.03.2018, 19:37  [ТС]
А теперь поводите по кнопкам и групбоксам курсором, желательно - с подключенным манифестом.
0
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,120
21.03.2018, 22:34
Лучший ответ Сообщение было отмечено Xo66um как решение

Решение

Как-то нормально всё. Может чего не так делаю или студия не та.
Вложения
Тип файла: zip GroupBox.zip (6.3 Кб, 6 просмотров)
1
18 / 18 / 15
Регистрация: 19.03.2018
Сообщений: 49
22.03.2018, 04:22  [ТС]
Цитата Сообщение от Ygg Посмотреть сообщение
Может чего не так делаю или студия не та.
Видимо Видимо также, и я что-то неправильно делаю, ибо проблему с перекрывающими друг друга контролами из-за курсора над ними, не получается воспроизвести, хотя я раньше пробовал такой способ. Мистика, одним словом...

В любом случае, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2018, 04:22
Помогаю со студенческими работами здесь

Шрифт собственной страницы отличается от шрифта сайта, не смотря на то,что шрифт указан одинаково в обеих страницах
Сверстал страницу по образцу данного сайта https://www.biglion.ru/deals/pivnoy-restoran-set9-50/. Я даже указывал ссылки на шрифт, которые...

Шрифт. как интегрировать нестандартный шрифт в БД?
Скажите пожалуйста, можно ли как-то интегрировать нестандартный шрифт в базу данных?

8x8 стандартныый растровый шрифт что это? Это значит шрифт Lucida 8 pt?
Пишу программку но не могу разобраться с этим понятием

GroupBox
Динамически создаваемая Button закрывается GroupBox-ом. Как ее сделать видимой в GroupBox?

GroupBox
Кто знает, что нужно применить для GroupBox, если для form1.ComboBox1.itemindex;. что подставить сюда form1.GroupBox1......; - вместо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru