Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Длина строки в заголовке колонки ListView 
:(
    Опции темы
UnderFelixAbove
Дата 30.9.2010, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.7.2007
Где: г. Астрахань

Репутация: нет
Всего: нет



Имеется следующий фрагмент кода, с помощью которого определяется строка в заголовке ListView

Код

HD_ITEM hdi;
const int size = 256;
TCHAR lpBuffer[size];
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
hdi.cchTextMax = size;
Header_GetItem(m_hWndHeader,nCol,(LPHDITEM)&hdi);


Результат будет хранится в поле ptzText и lpBuffer соответствено.
Поле cchTextMax задает длину строки. Если в заголовке хранится очень длинная строка, то в ответ будет положена обрезанная строка по длине cchTextMax, если в заголовке - маленькие строки, то зачем выделять больше памяти чем нужно?

Отсюда вопрос: Как можно заранее узнать длину этой строки, чтобы выделить памяти ровно столько сколько нужно?

Заранее спасибо!
PM MAIL ICQ   Вверх
Estranged
Дата 30.9.2010, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: 3
Всего: 3



pszText
A pointer to an item string. If the text is being retrieved from the control, this member must be initialized to point to a character buffer. If this member is set to LPSTR_TEXTCALLBACK, the control will request text information for this item by sending an HDN_GETDISPINFO notification message. Note that although the header control allows a string of any length to be stored as item text, only the first 260 TCHARs are displayed.

Нотариально заверенные данные из описания HDITEM структуры.
PM MAIL   Вверх
UnderFelixAbove
Дата 1.10.2010, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.7.2007
Где: г. Астрахань

Репутация: нет
Всего: нет



Цитата(Estranged @ 30.9.2010,  16:58)
pszText
A pointer to an item string. If the text is being retrieved from the control, this member must be initialized to point to a character buffer. If this member is set to LPSTR_TEXTCALLBACK, the control will request text information for this item by sending an HDN_GETDISPINFO notification message. Note that although the header control allows a string of any length to be stored as item text, only the first 260 TCHARs are displayed.

Нотариально заверенные данные из описания HDITEM структуры.

Можно немного поподробнее. Как это может помочь определить точную длину строки. Или этого сделать нельзя?
PM MAIL ICQ   Вверх
Estranged
Дата 1.10.2010, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: 3
Всего: 3



HD_ITEM hdi;
hdi.mask = HDI_TEXT;
hdi.pszText = LPSTR_TEXTCALLBACK;
hdi.cchTextMax = 0;
Header_GetItem(m_hWndHeader,nCol,(LPHDITEM)&hdi);

А потом в обработке сообщений через WM_NOTIFY получить HDN_GETDISPINFO:
{
LPNMHDDISPINFO pDispInfo = (LPNMHDDISPINFO) lParam;
pDispInfo->cchTextMax; вот тут размер текста
}
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.