Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скролинг в List Contrlole

15K
30 ноября 2007 года
set1984
20 / / 04.07.2007
Сталкнулся с такой проблемкой. Пишу используя библиотеку MFC, создаю обработчик прерывания от таймера (захожу в него каждую секунды) и вывожу в List Control n-ое количество записей. Проблема в том,что скрол перемещаеться всегда наверх, незнаю что и делать как отключить автоскролинг??? Посмотрел в нете и ничего не нашел(((( И еще один вопрос когда мы выводим много записей контрол мигает (перерисовываеться каждый раз когда выводим новую запись)... хотел узнать как от этого избавиться ... тоесть какое событие за это отвечает, чтобы в его обработчике переписать код??? Буду очень благодарен!!!!
34K
30 ноября 2007 года
DrDiesel7373
5 / / 23.11.2007
Цитата: set1984
Сталкнулся с такой проблемкой. Пишу используя библиотеку MFC, создаю обработчик прерывания от таймера (захожу в него каждую секунды) и вывожу в List Control n-ое количество записей. Проблема в том,что скрол перемещаеться всегда наверх, незнаю что и делать как отключить автоскролинг??? Посмотрел в нете и ничего не нашел(((( И еще один вопрос когда мы выводим много записей контрол мигает (перерисовываеться каждый раз когда выводим новую запись)... хотел узнать как от этого избавиться ... тоесть какое событие за это отвечает, чтобы в его обработчике переписать код??? Буду очень благодарен!!!!



1) Чтобы всегда последняя добавленная строка была в поле видимости снизу надо просто установить указатель выделения на последнюю строку. Делать так:

/*это обработчик по таймеру*/

m_list1.AddString(YouString);
m_list1.SetCurSel(m_list1.GetCount()-1);
UpdateData(false);
m_list1 - обьект класса твоего CList-a. В cв-вах контрола Clist не забудь поставить галку "Single Selection"

Все ! :) работет .
2) по поводу мигания.... честно.. не заметил... Сколько записей выводишь в свой контрол ?

Возможно логическая ошибка: ПРиведу пример:
a) for(int j=0; j<2000; j++)
{
int k = rand();
m_list1.AddString(YouString);
m_list1.SetCurSel(m_list1.GetCount()-1);
UpdateData(false);
}
Мигает как ошалелая. Потому что ошибка. СНАЧАЛА надо добавить все элементы, и потом их выводить (читай - "ставить курсор в конец")

б) for(int j=0; j<2000; j++)
{
int k = rand();
m_list1.AddString(YouString);
}
m_list1.SetCurSel(m_list1.GetCount()-1);
UpdateData(false); // кстати можно без него

Ничего не мигает.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог