Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программно прокрутить CListBox вправо до упрова 
V
    Опции темы
dizzy1984
Дата 12.4.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть список, заполняемый путями к файлам.
Он представлен классом CHScrollListBox, который является потомком CListBox.
Размер окна может быть меньше длины путя и возникает желание после заполнения списка прокрутить
горизонтальный ползунок до конца вправо, т.к название файлов важнее всего пути к ним.
Не ясно как это сделать. Метода в классе я не нашел. Есть сообщение, приводящее к прокрутке вправо на
некоторое число пикселей, но это не совсем то, т.к не докрутит до конца.
PM MAIL   Вверх
Greeen
Дата 12.4.2007, 15:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробуй заюзать
Код

BOOL CWnd::SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE);



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
dizzy1984
Дата 13.4.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Фуфффф... что я, бедный, не перепробовал.
Цитата

Попробуй заюзать
Код    
BOOL CWnd::SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE);

Не канает, SetScrollInfo только задает свойства листбокса.

Код

m_lb.GetScrollInfo(SB_HORZ, &si);
m_lb.SetScrollPos(SB_HORZ, si.nMax);    

это только сдвинет ползунок, содержимое окна останется.
его, конечно, тоже можно программно перерисовать, используя TextOut, но это накладно.

Пробовал даже ставить свойство Right Align Text, но CHScrollListBox с ним работал некорректно.
Пробовал найти сообщение, которое посылается листбоксу для его прокрутки вправо. 
CListbox в msdn не помог. В файле winuser.h ничего не нашел.
Сообщение отыскал только с запущенным spy++. Причем даже там нужно было проставлять 
дополнительные опции для его показа. Оказалось, это общее сообщение, оно не относилось к самому листбоксу, а
скорее к полоске прокрутки.
Окончательное решение вот такое.
[code=cpp]
CHScrollListBox m_lb;
m_lb.SendMessage(WM_HSCROLL, SB_RIGHT);
[/co]
PM MAIL   Вверх
Greeen
Дата 13.4.2007, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dizzy1984 @  13.4.2007,  10:55 Найти цитируемый пост)
SetScrollInfo только задает свойства листбокса

This function sets the parameters of a scroll bar, including the minimum and maximum scrolling positions, the page size, and the position of the scroll box (thumb). SetScrollInfo also redraws the scroll bar, if requested. 


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
dizzy1984
Дата 13.4.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

SetScrollInfo только задает свойства листбокса

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


 




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


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

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