Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListBOX: автопрокрутка, своевременная отрисовка, помогите с listbox`ом 
V
    Опции темы
Finarfin
Дата 9.6.2009, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В функции ответа на нажатие кнопки:
Код

void CTestDlg::OnBnClickedOpenTxt() // заполнение массивов из файла txt
{
/* <...> открываем файл */            
        // создаем сообщение для ListBox
        CString ListMes;
        ListMes = "The file opened: " + DialogOpenTXT.GetPathName();
        myList.AddString(ListMes);

/* <...> в цикле обрабатываем файл */
        {
        /* <...>*/
        ListMes = "всякие сообщения, типа сейчас я делаю то-то и то-то";
        myList.AddString(ListMes);
        /* <...> */
        }
        
/*  закончили*/    ListMes = "Operation finished successfully";
        myList.AddString(ListMes);
}

Так вот, все сообщения в ЛистБоксе появляются все одновременно только когда функция заканчивается }
А мне надо чтобы до того как я вхожу в цикл написалось сообщение, в цикле, и после.
Попробовал каждый раз после myList.AddString(ListMes); писать UpdateList(); , и там делать следующее:
Код

void CTestDlg::UpdateList()        // обновление ListBox
{
            UpdateData(1);
            CWnd* listbox = (CWnd*)GetDlgItem(IDC_LIST);
            CDC* pDClist = listbox->GetDC();
            ReleaseDC(pDClist);
            Invalidate(1);
}

не помогает. Это уже от отчаяния, ибо я вобще в вендах первый раз. до этого только в инсте на паскале писал в консоли. Тут приспичило делать прогу, алгоритм сделал, а в интерфейсе туплю.
Посему еще вопрос:
Как сделать, чтобы этот ListBox автоматически вниз прокручивался?

Спасибо за внимание smile 
PM MAIL WWW   Вверх
Andrey44
Дата 10.6.2009, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Цитата(Finarfin @  9.6.2009,  19:27 Найти цитируемый пост)
В функции ответа на нажатие кнопки:

Тебе надо создавать отдельный поток и в нем и добавлять айтемы в листбокс.
Может и еще как-то можно, но это первое что пришло в голову.
И при добавлении новой строки, листбокс должен автоматом прокручиваться, вроде так.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Earnest
Дата 10.6.2009, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



После AddString нет никакой автоматической прокрутки. Но есть Invalidate,  так что вместо UpdteList просто поставь UpdateWindow. Чтобы прокручивать, либо ставь фокус на добавленную строку, либо вычисляй верхний элемент и вызывай SetTopIndex.

Цитата(Andrey44 @  10.6.2009,  08:06 Найти цитируемый пост)
Тебе надо создавать отдельный поток и в нем и добавлять айтемы в листбокс.

Вообще-то лучше наоборот - файл читать в потоке, и обновлять листбокс по таймеру или по какому-то событию.


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Цитата(Earnest @  10.6.2009,  07:22 Найти цитируемый пост)
Вообще-то лучше наоборот - файл читать в потоке, и обновлять листбокс по таймеру или по какому-то событию. 
Да , точно Earnest, это я ступил немногоб конечно лучше читать в отдельном потоке.




--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Finarfin
Дата 10.6.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


 




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


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

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