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

Ваш аккаунт

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

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

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

Добавление элементов в SysListView32

87K
15 апреля 2018 года
Himmler
4 / / 15.04.2018
Здравствуйте.

Существует ли способ добавить в SysListView32 строки/столбцы, кроме как через SendMessage ?
Макрос ListView_InsertItem - это всё тот же переобёрнутый SendMessage.
Возможно ли, например, при создании SysListView32 указать желаемую размерность, а не вызывать SendMessage для каждой строки/столбца ?
Либо может есть ещё какие-то варианты ?
342
17 апреля 2018 года
Yos
209 / / 21.06.2003
Что значит размерность, поясните пожалуйста.
87K
17 апреля 2018 года
Himmler
4 / / 15.04.2018
Количество строк * Количество столбцов
260
20 апреля 2018 года
Ramon
1.1K / / 16.08.2003
Аудитория задается вопросом: с какой проблемой борется автор?
87K
20 апреля 2018 года
Himmler
4 / / 15.04.2018
С проблемой поштучного добавления. Это требует и процессорного времени, и большего размера кода.
По мне, это примерно как вызывать malloc для каждого байта из всего требуемого размера.
260
20 апреля 2018 года
Ramon
1.1K / / 16.08.2003
Цитата: Himmler
С проблемой поштучного добавления. Это требует и процессорного времени, и большего размера кода.
По мне, это примерно как вызывать malloc для каждого байта из всего требуемого размера.

А что если таки почитать MSDN внимательно? ListView_SetItemCount/ListView_SetItemCountEx

PS: И в дополнение, не перерисовывать элементы управления почем зря.

87K
21 апреля 2018 года
Himmler
4 / / 15.04.2018
Я умею пользоваться MSDN, и все макросы ListView я давно перелопатил.
И WM_PAINT блочить я тоже умею.

Ни то, ни другое не имеет отношения к заданному вопросу, суть остаётся прежней.
Для каждого элемента надо вызывать SendMessage.
Да, оба приведённых выше метода позволяют выполнить добавление быстрее, но никак не уменьшает количество вызовов.

Очень хотелось бы ответов не в стиле "А зачем оно нужно?" или "А вот почитайте MSDN".
Всё очевидное я давно уже просмотрел и перепробовал.
Именно поэтому спросил здесь про альтернативные методы.
260
21 апреля 2018 года
Ramon
1.1K / / 16.08.2003
Самый альтернативный это Virtual List-View Style коий также упоминается в API выше.

Если вас не устраивает ничего из вышеперечисленного, то кроме как добавить "учитесь ходить через открытую дверь в виде API, а не ломиться в бетонную стену рядом" мне нечего.

PS: Возможно у уважаемой аудитории еще есть что добавить.
PPS: Если список столь большой, что вас не устраивает даже т.н. виртуальный список, то возможно представление данных в пользовательском интерфейсе структурировано не должным образом.
342
23 апреля 2018 года
Yos
209 / / 21.06.2003
SendMessage в вашем случае, по большому счету, это не более чем вызов процедуры установки универсального значения. Если вдруг, когда-нибудь, вы решите написать свою собственную реализацию отображения списка, то данная функция просто будет называть иначе. Или перегружаться в зависимости от типа устанавливаемого значения. И все. Оптимизация по скорости и ресурсам возможна только при проприетарной реализации. Но далеко не факт, что общая производительность общего кода будет значительно выше.

Так что да - альтернативы нет.

PS Кстати SysTreeView32 работает еще интереснее.
PPS И полностью согласен с Ramon PPS. Основная проблема всегда не на стороне API.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог