Иногда в "SysListView32" много строк, и имеет смысл вставлять иконки только для видимой (в данный момент) части листа (через сообщение LVN_GETDISPINFO). Но как сделать так чтобы начало показывались строки а потом (когда все видимые строки появились) вставить иконки.
_evil имеет смысл вставлять иконки только для видимой (в данный момент) части говорит о том, что LVS_OWNERDATA не установлен. Если это так, то LVN_GETDISPINFO не придёт. Установи LVS_OWNERDATA и заблокируй обработку запроса с маской LVIF_IMAGE до прихода и обработки запросов с маской LVIF_TEXT для всех видимых итемов (и субитемов).
ещё один вопрос, пожалуйста – SHGetFileInfo даёт индекс иконки (из SYS – листа ) но очень медленно а Internet Explorer(проводник) быстрее каким макаром ?
Что за прикол делаю "SysListView32" с флагом LVS_OWNERDATA всё виснет . Хотя без него контрол шлет родителю LVN_GETDISPINFO через WM_NOTIFY и если его обработать то он нормально вставляет (LVN_GETDISPINFO pnmv = (LV_DISPINFO FAR *) lParam “заблокируй обработку запроса с маской LVIF_IMAGE” – можно по подробней
Странно как-то, у меня не шлёт LVN_GETDISPINFO без LVS_OWNERDATA. Насколько я понимаю, LVN_GETDISPINFO посылается только virtual listview, хотя может я и ошибаюсь. Предполагалось, что у тебя virtual listview, и от него можно было получить через сообщение LVN_ODCACHEHINT номера, которые будут перерисовываться (с какого по какой итем), запоминать эти два номера (в структуре NMLVCACHEHINT - iFrom и iTo) и пока для итемов с номерами от iFrom до iTo не пройдут запросы текста (LVIF_TEXT) через LVN_GETDISPINFO и не заполнены для них .item.pszText, обработку запроса с маской LVIF_IMAGE пропускать. Тогда и появлялись бы сначала строки, а затем уже иконки. Но раз у тебя не virtual, то iFrom и iTo не получишь. Что касается SHGetFileInfo и explorer'a, возможно explorer пользуется другими источниками, а не SHGetFileInfo. Мож в реестре где смотрит.
Спасибо ты меня просветила !!! а сообщение LVN_GETDISPINFO у меня приходило наверно из за индекса иконки == I_IMAGECALLBACK;