Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CListBox. нужна ли прокрутка 
:(
    Опции темы
_hunter
  Дата 8.11.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Добрый день...

Подскажите как определить нужна ли в CListBox полоса прокрутки (или как у него узнать (сам бокс это знает -- если прокрутка не нужна он ее серой делает)).
И как эту полосу спрятать (точнее в обработчике какого сообщения выполнять вышеупомянутую проверку)?
Не хочется перекрывать функции добавления/удаления и в них высоты итемов считать...

С уважением...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 9.11.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



1) Посмотри функции GetScrollInfo
2) Чтобы листбокс не имел скрол-бара, когда места достаточно, нужно убрать флаг LVS_DISABLENOSCROLL (как раз этот флаг заставляет скроллбар оставаться и дизэблиться).


--------------------
...
PM   Вверх
_hunter
Дата 9.11.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



второе не помогло...
написал:
Код

void CHScrollListBox::PreSubclassWindow() 
{
    CListBox::PreSubclassWindow();

    ModifyStyle(LBS_DISABLENOSCROLL, 0, 0);

    ModifyStyle(WS_HSCROLL, 0, 0);
}

но вертикальная полоса всеравно просто дисблится...



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 10.11.2006, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



А если убить стиль прямо в ресурсах? (Горизонтальный скролл тоже).
Кроме того, при вызове ModifyStyle, последний параметр ставь SWP_FRAMECHANGED. И можно одинм вызовом:
Код

ModifyStyle (LVS_DISABLENOSCROLL | WS_HSCROLL, 0, SWP_FRAMECHANGED);



--------------------
...
PM   Вверх
_hunter
Дата 10.11.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



из ресурсов убрал -- помогло. но в чем разница?..


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 10.11.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Думаю, в отсутствии флага SWP_FRAMECHANGED в вызове ModifyStyle: этот флаг заставляет окно пересчитать (и перерисовать) не-клиентскую область. А без него - это просто SetWindowLong.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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