2009-03-23 2 views
0

Я хочу создать CListView, который будет читать его строки с удаленного сервера с помощью сокета. Строки могут быть более миллиона, поэтому мне нужно читать строки только тогда, когда они мне нужны, и их можно читать в группах (с более чем одной строкой на запрос). Мне также нужно поддерживать сортировку по строкам.ListView с флагом LVS_OWNERDATA

Может быть, мне нужно использовать элемент управления списком с флагом LVS_OWNERDATA? И когда мне нужно прочитать еще одну группу строк? Нужны ли мне кнопки Prev, Next, как если бы это была сетка веб-страниц?

Не могли бы вы дать мне несколько советов?

С наилучшими пожеланиями

P.S. Но есть еще одна проблема, которая у меня есть ... CListView находится в основном потоке пользовательского интерфейса, но я могу запрашивать строки только со второго потока, который не всегда может быть доступен для использования.

Может быть, мне нужно заблокировать поток пользовательского интерфейса в обратном вызове для информации о строках?

И есть ли способ заблокировать ListView для запроса информации о новых строках? Может быть, отключить его, пока мой второй поток не занят?

+0

Что вы подразумеваете под «сортировкой по строкам»? Обычно вы сортируете по столбцу или нескольким столбцам в определенном порядке. –

+0

Я имею в виду сортировку строк по столбцу :) –

+0

Вы можете сделать это только в том случае, если ваш удаленный сервер поддерживает сортировку. –

ответ

3

Прочитано Раймонд Чень о OWNERDATA listviews. Вам нужно будет реализовать свой собственный кеш для извлеченных данных и отобразить что-то разумное, пока данные извлекаются. Я не думаю, что кнопки Next/Prev - хорошая идея, представление списка обрабатывает собственную навигацию (полоса прокрутки, сочетания клавиш и т. Д.)

Смежные вопросы