![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Как изменить размер шрифта на окне класса BUTTON, который соответствует строке, полученной через второй параметр при создании его функцией CreateWindow и как эту строку изменить?
|
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 12 Всего: 92 |
SetWindowText думаю свой контрол придется делать, а в нем DrawItem и т.д. Смотри прикрепленную тему Coocky в этой ветке. Нет, в соседней (MFC) Это сообщение отредактировал(а) zkv - 18.7.2007, 20:11 |
|||
|
||||
| Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: нет Всего: 1 |
я не понял ГДе тебе надо шрифт менять, можно поподробнее...
Добавлено через 21 секунду в заголовке что ли? Добавлено через 36 секунд или на батоне --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
| Pulse69 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 28.4.2006 Где: Хабаровск Репутация: 8 Всего: 10 |
Можно попробовать использовать сообщение WM_SETFONT.
--------------------
Ctrl+Alt+Reset |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 12 Всего: 92 |
||||
|
||||
| Pulse69 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 28.4.2006 Где: Хабаровск Репутация: 8 Всего: 10 |
Что-то я чувствую какой-то сарказм в этих словах :) Если кнопка использует системный шрифт, тогда можно создать свой и установить его кнопке. Вот код (все проверки на ошибки опущены для простоты):
В случае, если используется другой шрифт, можно получить его, выудить информацию, и создать на его основе новый, но нужного размера. Примерно так (опять без проверок):
--------------------
Ctrl+Alt+Reset |
||||||
|
|||||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Pulse69, спасибо, работает. Шрифт на кнопках у меня меняется при изменении размеров окна. Если ухватить за рамку и двигать мышью, через некоторое время окна приложений перестают перерисовываться (как называется это явление?). Также непонятно, почему у меня желаемый размер шрифта вычисляется правильно только в первый раз.
Это сообщение отредактировал(а) ZufuS - 27.7.2007, 05:43 Присоединённый файл ( Кол-во скачиваний: 15 )
15.rar 43,32 Kb |
|||
|
||||
| Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: нет Всего: 1 |
если не ошибаюсь Repaint Это сообщение отредактировал(а) Santilka85 - 27.7.2007, 06:41 --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
| Pulse69 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 28.4.2006 Где: Хабаровск Репутация: 8 Всего: 10 |
Объект hFont нужно удалить с помощью DeleteObject когда он больше не нужен. Здесь при каждом изменении размера создаётся новый экземпляр => происходит утечка GDI-объектов, а это нехорошо. Сохраняйте где-нибудь ранее созданный шрифт и удаляйте его перед созданием нового. Должно помочь. Насчёт размра шрифта тоже не очень понятно. Может лучше в качестве высоты выбрать не координату нижней грани окна, а его высоту? Можно сделать так
--------------------
Ctrl+Alt+Reset |
||||
|
|||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Написал так, не помогло. А это работает. Я думал, что bottom - это и есть высота, а не координата. Но тогда первый раз он вычисляется неправильно. Это происходит когда в функции NEW() вызывается SendMessage(hWnd, WM_SIZE, NULL, NULL). |
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
||||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
UP
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
ZufuS, а что не получается?
|
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Когда
http://forum.vingrad.ru/act-Attach/type/post/id-1208386.html |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
ого! прям все окна стали серые. У тебя утечка GDI ресурсов.
|
|||
|
||||
| 586 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Я так понял, шрифт одинаковый для всех кнопок, тогда зачем ты создаешь один и тот же шрифт несколько раз? Создай один шрифт и отправляй в цикле с помощью SendMessage WM_SETFONT. И незабывай удалять старый шрифт. Примерно так:
|
||||
|
|||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Спасибо. Работает. Не совсем понятно зачем hOldFont
у меня и так работает. Также не совсем понятно что значит HFONT hOldFont=(HFONT)SendMessage(hB[0], WM_GETFONT, 0, 0); если это для того чтобы сохранить hFont в hOldFont, то чем это отличается от hOldFont = hFont? И надо ли при выходе из программы вызывать DeleteObject для неудалённых объектов? |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
да Идея в том, чтобы его окна не использовали, а потом удалить. Поэтому и вызываю DeleteObject после цикла. Я просто не знаю, можно ли шрифт удалять, если он ассоциирован с окном. Решил перестраховаться. |
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
ясно, спасибо
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |