| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как усечь слева подкаталоги? |
| Автор: andrew_121 14.5.2009, 14:18 |
| Дарова! Собственно это и есть вопрос. Заранее спасибо! |
| Автор: GremlinProg 14.5.2009, 17:44 |
| о чем вопрос-то? какие подкаталоги, почему слева, и при чем тут строка? так топик ни кто не поймет, объяснять надо, andrew_121! |
| Автор: andrew_121 14.5.2009, 18:08 |
| На форме есть Static, в него вписывается путь к каталогу. Так вот когда вписываю строку длинее чем вмещается, хотелось бы ее минимизировать, усекая часть пути, и заменяя ее точками. Все не раз видели такое. Сорри за первый пост. |
| Автор: SenkraD 14.5.2009, 19:08 | ||
| andrew_121, ну как я понял со стоками мы работать умеет, так что проблемма в том чтобы получить длину строки в пикселях? Если мо предположение правильные то
|
| Автор: dumb 14.5.2009, 19:17 |
| http://msdn.microsoft.com/en-us/library/dd162498(VS.85).aspx + DT_PATH_ELLIPSIS |
| Автор: andrew_121 14.5.2009, 19:28 |
Гы... ) А как у Static-а, созданого средствами WinAPI получить сие? |
| Автор: GremlinProg 14.5.2009, 19:35 | ||
то, что все не раз видели, это скорее PathCompactPath из shlwapi:
|
| Автор: andrew_121 15.5.2009, 16:38 |
| А как у Static-а, созданого средствами WinAPI получить HDC ? |
| Автор: GremlinProg 15.5.2009, 16:54 | ||
|
| Автор: andrew_121 15.5.2009, 17:08 |
| GremlinProg, Спасибо! |
| Автор: artsb 15.5.2009, 17:17 |
| andrew_121, тебе же dumb написал про DrawText. Чего ты паришься? Или ты любишь поизвращаться |
| Автор: andrew_121 15.5.2009, 17:40 | ||
artsb,
Так тут и нужен HDC. |
| Автор: artsb 15.5.2009, 18:02 | ||||
В качестве первого параметра можно передать хедл любого канваса. А в данном случае вроде можно просто передать NULL, т.к. от него всё равно толку нет Добавлено @ 18:13 На счёт NULL я погорячился Ещё нужен флаг DT_MODIFYSTRING:
тогда в asText будет хранить изменённая строка. Единственно (только сейчас заметил), строка будет иметь вид:
:( Похоже, придётся поизвращаться |
| Автор: GremlinProg 15.5.2009, 18:39 |
конечно можно, но статику, как и любым другим контролам можно выставить шрифт, отличающийся от встроенного в таком случае, как DrawText с DT_PATH_ELLIPSIS, так и PathCompactPath правильных габаритов текста для этого статика уже не посчитают, т.е. будут либо обрезать строку там, где ее обрезать не нужно, либо обрезать за габаритами, в зависимотси от разницы ширин текста на этих девайсах |
| Автор: GremlinProg 15.5.2009, 19:00 | ||
по крайней мере, можно просто учесть шрифт:
тогда пойдет любой HDC, хоть десктопа: GetDC(HWND_DESKTOP) Добавлено через 3 минуты и 49 секунд да нет, ей в принципе без разницы на чем рисовать шрифт с окна функции GDI сами не устанавливают, иначе мы не могли бы его сменить, кроме как явной посылкой WM_SETFONT |
| Автор: artsb 15.5.2009, 19:11 | ||
Вот:
Конечно можно было создать объект канвы в функции и юзать его, но это же время и ресурсы ЗЫ не смотря на то, что это изврат, не бейте сильно |
| Автор: GremlinProg 15.5.2009, 19:17 | ||
это делает DrawText с флагом DT_END_ELLIPSIS или пословно, с флагом DT_WORD_ELLIPSIS только не "три точки", а "троеточие", одним символом Добавлено через 1 минуту и 59 секунд а, ну да, не заметил, не последние, а первые символы но в любом случае, это не задача топика |
| Автор: artsb 15.5.2009, 19:44 | ||
Или я не правильно понял? |
| Автор: GremlinProg 15.5.2009, 21:31 | ||
не символы, а подкаталоги:
два варианта уже предложены |
| Автор: artsb 15.5.2009, 23:18 | ||||
Изначально я думал, что нужно получить строку вида:
Если это так, то ничего не мешает добавить в моей функции пару строк:
Если же нужен такой вариант как написал GremlinProg, то как мне кажется, DrawText будет в самый раз |