![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.05.2009
Сообщений: 29
|
![]()
В диалоговом окне есть статик-текст определенной ширины и высоты, я передаю строку с текстом (где могут быть "\n") и этот текст отправляю статику. Как узнать на сколько надо увеличить/уменьшить высоту статика и диалогового окна, чтобы весть текст был виден? Как во всплывающих подсказках, где размер окошка зависит от текста... Спасибо )
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
Можно воспользоваться DrawText() с флагом DT_CALCRECT.
Не забудьте также и про WM_GETFONT |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.05.2009
Сообщений: 29
|
![]()
А как связать hFont после WM_GETFONT и DrawText(<...>)?
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
SelectObject(hDC, hFont)
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.05.2009
Сообщений: 29
|
![]()
Частично получилось: высоту определять в зависимости от размера шрифта получилось, но теперь почему-то фон текста не прозрачный и 2 раза выводится...
Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
А у вас больше нигде нет вызова DrawText?
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 15.05.2009
Сообщений: 29
|
![]()
Более менее разобрался, только не получается увеличивать само диалоговое окно: когда я вызываю SetWindowPos(hWnd, <...>) из "case WM_CTLCOLORSTATIC:" то все подвисает...
Код:
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
Конечно, потому что WM_CTLCOLORSTATIC вызывается во время отрисовки а когда меняется размера начинается отрисовка. Сделайте все подсчеты из WM_CREATE например.
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 15.05.2009
Сообщений: 29
|
![]()
Спасибо, перенес все в WM_CREATE, кроме цвета текста и установки прозрачности фона текста. Работает. А как можно текст выровнять по ширине?
И еще такой вопрос: как сделать фон у иконки прозрачным? Иконку добавляю так: Код:
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,370
|
![]()
Иконки вроде должны сами иметь прозрачность, т.е. если она есть, все будет рисоваться прозрачно - проверьте иконку.
Вырванивать текст по ширине - никак, покрайней мере средствами static окна. Выход - рисовать текст самому, слово за слово. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как узнать сколько раз просматривался файл | vovanblch | Безопасность, Шифрование | 15 | 02.05.2011 01:15 |
Как узнать сколько RAM хавает процесс | WOWka777 | Общие вопросы C/C++ | 5 | 01.02.2011 17:02 |
Узнать на сколько загружает процессор какая-то программа.. | Человек_Борща | Общие вопросы Delphi | 7 | 19.09.2010 13:30 |
как при импорте из Excel в delphi узнать сколько заполненных строк в книге Excel?чтобы организовать цикл | betirsolt | БД в Delphi | 1 | 17.01.2010 18:51 |
Как узнать какой текст выделен в текст поле | mogul82 | JavaScript, Ajax | 2 | 02.11.2008 16:32 |