Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: HScroll в ListBox Добавлено: 09.03.05 23:05  

Автор вопроса:  ZagZag | ICQ: 295002202 

Ответить

  Ответы Всего ответов: 54  

Номер ответа: 16
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #16 Добавлено: 14.03.05 19:34
virtual listview не "монстрозный контрол", а обычный listview из windows common controls, у которого среди прочих стилей установлен стиль LVS_OWNERDATA.

Virtual List-View Style
A virtual list view is a list-view control that has the LVS_OWNERDATA style. This style enables the control to handle millions of items because the owner receives the burden of managing item data. This allows you to use the virtual list-view control with large databases of information, where specific methods of data access are already in place.

A virtual list-view control maintains very little item information itself. Except for the item selection and focus information, the owner of the control must manage all item information. Other processes request item information from the owner by using LVN_GETDISPINFO notification messages.

Because this type of list control is intended for large data sets, it is recommended that you cache requested item data to improve retrieval performance. The list view provides a cache-hinting mechanism to assist in optimizing the cache. The hint is implemented in the form of an LVN_ODCACHEHINT notification message.

Creating a Virtual List-View Control
You create virtual list-view controls using the CreateWindow or CreateWindowEx function, specifying the LVS_OWNERDATA window style as part of the dwStyle function parameter.

You can use the LVS_OWNERDATA style in combination with most other window styles, except the LVS_SORTASCENDING or LVS_SORTDESCENDING style. All virtual list-view controls default to the LVS_AUTOARRANGE style.

Note Dynamically switching to and from the LVS_OWNERDATA style is not supported.

Ответить

Номер ответа: 17
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #17
Добавлено: 14.03.05 21:09
Угу, см. клиента, благо доступ у тя еще есть, хоть ты и своими пирогами занят ;)

Но при этом деле на слабеньких машинах долговато прорисовывается :( - на 450 MHz заметно подтормаживние :))

Ответить

Номер ответа: 18
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #18 Добавлено: 14.03.05 22:31
Причина тормозов вряд ли связана с listview.
Когда скролишь листвью, он посылает родителю WM_NOTIFY c LVN_GETDISPINFO, и пока родитель не вернет ему информацию для отображения, он ждет не перерисовываясь. Обычно самая долгая операция - подготовить картинку для итема. Если хэндл картинки не кэширован, то на его получение уходит куча времени. Особенно если используется для этого SHGetFileInfo. Если хэндлы иконок есть готовые (например в массиве) то рисуется быстро. Или листвью без отображения иконок. Рисует итемы моментом.
Если обрабатывать ещё и LVN_ODCACHEHINT - оно приходит перед LVN_GETDISPINFO (запрос на подготовку данных для итема), то скорость отображения возрастает, т.к. по этому сообщению родитель может начинать готовить данные.

Ответить

Номер ответа: 19
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #19
Добавлено: 14.03.05 23:27
Ну раньше-то ясно отчего подтормаживание шло - у меня в реальном времени данные из БД получались по ID'шникам... Сейчас по сравнению с тем что было - день с ночью, на моем-то 2600 MHz - все ок, но на 500 - при таскинии слайдера - видно как подтормаживает прорисовка :)
Картинки берутся из ImageList'a... Думаю это не ах как тормозит, да и возможности проверить сейчас нет...

Ответить

Номер ответа: 20
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #20
Добавлено: 15.03.05 10:46
 Честно говоря мне ListView не очень понравился, да и давненько я с ним не работал. Ну и громоздковатый он в плане кода.
 Лучше подскажите мне как ускорить поиск PB-шных констант в инклюдах. Там когда нажимаешь символ '_' аддон проверяет текущее слово и генерит листбокс с продолжением. Пока просто показываю тултип с надписью "Please wait..." :)
 Как лучше организовать поиск? На моём 433 целероне приходится ждать несколько секунд пока заполнится лист.

Ответить

Номер ответа: 21
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #21
Добавлено: 15.03.05 10:51

PB = VB + ASM - MSVBVMxx.DLL +

 Так можно любой язык просчитать :)


36 Функций из 4-х (хоть и стандартных) библиотек для пустого проекта - ИМХО,
много :)

 36 функций или 1.35 метра функций :) Выбирай. В этом плане PB даже покруче Дельфи будет. С Си прошу не сравнивать, ведь PB - это всё таки ЯВУ.

Ответить

Номер ответа: 22
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #22 Добавлено: 15.03.05 11:36
Как лучше организовать поиск?

посмотри на algolist.manual.ru
там есть поиски. Это если касается уже считанного файла.

Открытие и чтение файлов .inc как сделано: ReadFile или MapViewOfFile?
win32api.inc вроде небольшой, так что быстрее будет с ReadFile.

Ответить

Номер ответа: 23
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #23
Добавлено: 15.03.05 14:15
 Ну почти ReadFile - через Open For Binary.
 Через MapViewOfFile? Так он же ж вроде закрывает доступ к файлу, а это недопустимо.
 Файл уже считан и лежит в строчной переменной, вернее в массиве строк. Ищу последовательно через InStr все позиции, начинающиеся например с %WS_ или %SM_ (вобщем не имеет значения).

Ответить

Номер ответа: 24
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #24 Добавлено: 15.03.05 16:37
Если в массиве только константы, отсортируй его предварительно, чтобы не искать по всему массиву, а только от текущей позиции вверх. Сделай строки в массиве фиксированной длины As STRING*32, с ними быстрее. Напиши свою процедуру поиска в строке вместо стандартной InStr, например в виде ассемблерной вставки, это должно быть быстрее.
Может есть смысл считать количество констант, начинающихся с символов, введенных в редакторе кода, и исходя из соотношения этого количества к общему количеству констант выбирать, либо очищать листбокс и перезаполнять его снова, либо удалять из него те итемы, которые оказались лишними.

Ответить

Номер ответа: 25
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #25
Добавлено: 15.03.05 17:12
Нет, в массиве находятся Win32API.INC и другие инклюды. Содержимое массива заранее не известно. Свою процедуру поиска писать не буду - мне бы лучше алгоритм поиска какой.
 Добавление/удаление не нужно. Список создаётся только для констант одного типа (например %LB_...), а не для всех констант вообще.

Ответить

Номер ответа: 26
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #26
Добавлено: 15.03.05 18:07
CyRax
36 функций или 1.35 метра функций :) Выбирай. В этом плане PB даже покруче Дельфи будет. С Си прошу не сравнивать, ведь PB - это всё таки ЯВУ.

Ну да - 13,5 Кб в дельфи 7 это минимум... Правда мона еще до 3,5 Кб уменьшить размер но при этом прийдется с собой нехилую библу таскать :)

Ответить

Номер ответа: 27
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #27
Добавлено: 15.03.05 18:21
Как это, 13 кБ без билы и 3.5 кБ с нехилой библой? :)

Ответить

Номер ответа: 28
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #28
Добавлено: 15.03.05 21:02
Ну это так... Если к Дельфи не подрубать VCL, то такие Win32 exe'шники у него получаются :)

Ответить

Номер ответа: 29
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #29
Добавлено: 16.03.05 09:53
Ну PowerBasic тоже рантайм в экзешник вшивает. Из 5 кБ - 3 рантайма. Правда что туда зашивается я пока не знаю.

Ответить

Номер ответа: 30
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #30
Добавлено: 16.03.05 11:11
 А если условно разбить строку на две части и перебирать байты в одном цикле сразу из двух участков? Ну это уже на ассемблере прийдётся.

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам