![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Solitaire |
|
||||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
Здравствуйте.
Есть List View, в котором пользователь может изменить текст элемента.
Проблема в том, что после изменения текста, размер label'а, содержащего текст не изменяется. Например, если текст был короткий (4 символа) и его заменили на длинный (16 символов), то после редактирования в label'е видно только 4 символа (в режиме редактирования видно всю строку). Наоборот, если текст был длинный (16 символов) и его заменили на короткий (4 символа), то после редактирования, когда элемент выделен, видно, что label растянут на 16 символов и в нем короткий текст по центру. Никаких специальных сообщений, управляющих размером label'а я не нашел. Как можно сделать, чтобы label подгонялся под размер текста? |
||||
|
|||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
можно попробовать возвращать CDRF_NEWFONT в ответ на уведомление NM_CUSTOMDRAW
т.е. чтобы при рисовании, listview всегда учитывал габариты текста sub-item'а http://msdn.microsoft.com/en-us/library/bb774865(VS.85).aspx Добавлено через 42 секунды sub-item'а или просто item'а -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Solitaire |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
К сожалению я еще не разбирался с NM_CUSTOMDRAW, т.к. до настоящего момента вполне устраивала стандартная прорисовка. Я не совсем понял, что нужно сделать. Просто обработать его вот так?
Если так, то это не работает. |
|||
|
||||
Solitaire |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
Решил проблему, устанавливая текст с помощью ListView_SetItemText.
Хотя это странно. Во многих примерах по List View текст, который хранится в каком-то внешнем буфере, устанавливается именно через обработку LVN_GETDISPINFO, и нигде не упоминается о проблемах с размером label'а. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Текст запрашивается через LVN_GETDISPINFO только для виртуальных списков. Кроме того, это уведомление посылается и в других случаях, и его нужно правильно обрабатывать - анализировать флаги маски и в зависимости от этого заполнять структуру.
-------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |