|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.10.2022, 09:53 | #11 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
Хорошо, если не сделаю, то прикреплю, пока что получается так, если в WM_PAINT lf.lfWidth -= 40;, то выводится тютелька в тютельку, но если начать менять размер окна, тогда строка от границы как бы убегает, короче говоря размер окна гораздо больше, чем текст.
Последний раз редактировалось apofioz; 20.10.2022 в 10:02. |
20.10.2022, 10:48 | #12 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Что и до сих пор никто не сказал, что если шрифт не моноширинный, то нельзя просто умножать кол-во символ на константу для длины?
|
20.10.2022, 11:24 | #13 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
|
20.10.2022, 11:27 | #14 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
p51x, это вроде и так очевидно Я же не зря про GetTextExtentPoint32 воздух сотрясаю
|
20.10.2022, 11:37 | #15 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
Кому?
Ясно, что ничего не ясно... Если шрифт зарегистрировать в WM_CREATE, затем в WM_SIZE: вычисляется новый размер окна, а как GetTextExtentPoint32 поможет подогнать шрифт под изменившееся окно? И как сделать так, чтобы после изменения размера окна, текст заполнял всё окно не перерегистрируя шрифт? Последний раз редактировалось apofioz; 20.10.2022 в 11:41. |
20.10.2022, 11:59 | #16 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
apofioz, аа, так тебе нужно, чтобы текст как бы заливал окно, переносясь, доходя до края, на следующую строку ?
Я не так понял проблему, значит. В этом случае придётся действовать обратно - известен размер клиентской области. Текст разбираем по отдельным символам, набираем сумму ширин каждой литеры, пока набор влазит в ширину. Затем переходим к новой строке (к "курсору" добавляется высота шрифта). Вот так, вручную но этим функционалом уже наделены статик-контрол и едит-контрол. Может, проще контрол растягивать в размер окна, а текст туда просто закинуть + шрифт нужный задать ? |
20.10.2022, 12:04 | #17 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
Нет, не так, нужно чтобы, если окно сжимается, то и текст уменьшался, если расширяется, то текст должен с окном расширяться, как будто последняя буква прилипла к правой стороне(краю) окна, может так будет понятнее.
|
20.10.2022, 12:09 | #18 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
apofioz, тогда нужно плясать всё равно от клиентского размера, после чего в WM_SIZING делать проверку при помощи GetTextExtentPoint32 на выход текста за край, а затем выполнять подгонку, уменьшая кегль на единичку на каждой итерации
|
20.10.2022, 12:26 | #19 | |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
Цитата:
Т.е. WM_SIZE не нужен нужен WM_SIZEING? Ну так как текст константный, в данном случае, количество символов не меняется, то как это должно выглядеть: Код:
Последний раз редактировалось apofioz; 20.10.2022 в 12:39. |
|
20.10.2022, 12:47 | #20 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
https://ru.wikipedia.org/wiki/%D0%9A...B3%D0%BB%D1%8C
менять нужно только lfHeight - инкрементом/декрементом нужно вызывать обработчик по умолчанию, а не просто выходить |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Win API 32. Открытие окна при нажатии на строку листбокса | Dark_Tarakan | Помощь студентам | 0 | 20.10.2016 20:52 |
Открытие окна при нажатии на строку листбокса | Dark_Tarakan | Win Api | 0 | 19.10.2016 18:16 |
подгон компонентов под размер окна | brutalis | Qt и кроссплатформенное программирование С/С++ | 1 | 22.09.2013 11:42 |
Как считать строку из диалогового окна (не консольного) | Elloriane | Общие вопросы C/C++ | 6 | 06.03.2013 21:59 |
Подгон текста по размеру | Jakethefish | JavaScript, Ajax | 1 | 07.03.2011 15:05 |