|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.10.2022, 10:43 | #1 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
Подгон окна под строку текста.
И снова, здравствуйте! Интересует такой вопрос: Допустим я хочу чтобы строка/слово текста точно умещалось в окно заданного размер, я задаю размеры окна в главной функции окна, в блоке сообщения WM_CREATE я пытаюсь вычислить ширину символа так cxChar =cxClient / nCharas т.е. отношение ширины окна(в пикселах) к количеству символов в строке(не в пискелах). Далее вычисляю высоту символа cyChar = -MulDiv(cxChar, GetDeviceCaps(hdc, LOGPIXELSY), 72); всё бы ничего, но окно не вмещает всех символов, один символ не хочет помещаться в окне. Наверняка есть более оптимальный способ, но на данный момент я делаю так. Чего не хватает в расчётах, и как довести до ума то, что уже есть, и сделать так, чтобы при увеличении/уменьшении окна текст так же оставался в окне, производить перерасчёт размеров символов в wm_size:...
Окно3.jpg |
20.10.2022, 07:51 | #2 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
apofioz,
как узнать размеры текста, выведенного на конкретный HDC с конкретным HFONT GetTextExtentPoint32 как подогнать клиентскую часть окна AdjustWindowRect |
20.10.2022, 08:34 | #3 | |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
Цитата:
|
|
20.10.2022, 08:41 | #4 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
apofioz, код показывай тогда
|
20.10.2022, 08:54 | #5 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
Код:
|
20.10.2022, 09:02 | #6 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
apofioz, так в твоём коде нет использования GetTextExtentPoint32
|
20.10.2022, 09:13 | #7 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
|
20.10.2022, 09:20 | #8 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
apofioz, обычно она работает чётко, просто что-то не так делаешь.
Я бы пересчёт размера вынес в обработчик WM_TIMER 250мс объект шрифта можно сделать полем класса и создать один раз. Или вообще назначить шрифт окну, чтобы каждый раз не назначать для HDC |
20.10.2022, 09:31 | #9 |
Форумчанин
Регистрация: 22.01.2014
Сообщений: 313
|
|
20.10.2022, 09:33 | #10 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
apofioz, прицепи проект в ZIP архиве. Если время будет - я попробую поковырять. Или кто-то другой успеет уже
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |