Уроки Iczelion'а




Урок . Контрол Listview - часть 13


ShowFileInfo proc uses edi row:DWORD, lpFind:DWORD LOCAL lvi:LV_ITEM LOCAL buffer[20]:BYTE mov edi,lpFind assume edi:ptr WIN32_FIND_DATA

Сохраняем адрес структуры WIN32_FIND_DATA в edi.

mov lvi.imask,LVIF_TEXT+LVIF_PARAM push row pop lvi.iItem mov lvi.iSubItem,0

Мы предоставляем название элемента и значение lParam, поэтому мы помещаем флаги LVIF_TEXT и LVIF_PARAM в imask. Затем мы устанавливаем приравниваем iItem номер ряда, переданный функции и, так как это главный элемент, мы должны приравнять iSubItem нулю (колонка 0).

lea eax,[edi].cFileName mov lvi.pszText,eax push row pop lvi.lParam

Затем мы помещаем адрес названия, в данном случая это имя файла в структуре WIN32_FIND_DATA, в рszText. Так как мы реализуем свою сортировку, мы должны заполнить lParam определенным значением. Я решил помещать номер ряда в это параметр, чтобы я мог получать информацию об элементе по его индексу.

invoke SendMessage,hList, LVM_INSERTITEM,0, addr lvi

Когда все необходимые поля в LV_ITEM заполнены, мы посылаем сообщение LVM_INSERTITEM listview, чтобы вставить в него элемент.

mov lvi.imask,LVIF_TEXT inc lvi.iSubItem invoke wsprintf,addr buffer, addr template,[edi].nFileSizeLow lea eax,buffer mov lvi.pszText,eax

Мы установим подэлементы, ассоциированные с элементом. Подэлемент может иметь только название. Поэтому мы указываем в imask LVIF_TEXT. Затем мы указываем в iSubItem колонку, в которой должен находиться подэлемент. В этом случае мы устанавливаем его в 1. Названием этого элемента будет являться размер файла. Тем не менее, мы сначала должны сконвертировать его в строку, вызвать wsрrintf. Затем мы помещаем адрес строки в рszText.

invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi assume edi:nothing ret ShowFileInfo endp

Когда все требуемые поля в LV_ITEM заполнены, мы посылаем сообщение LVM_SETITEM listview, передавая ему адрес структуры LV_ITEM. Заметьте, что мы используем LVM_SETITEM, а не LVM_INSERTITEM, потому что подэлемент считается свойством элемента. Поэтому устанавливаем свойство элемента, а не вставляем новый элемент.




Содержание  Назад  Вперед