Операционная система Windows 95 для программиста

  d8ef8794     

для любого сообщения WM_NOTIFY LV_ITEM


typedef struct tagLV_DISPINFO { NMHDR hdr; // для любого сообщения WM_NOTIFY LV_ITEM item; // информация об элементе списка } LV_DISPINFO;

Структура LV_ITEM была описана выше в разделе "Вставка элементов списка".

При получении извещения LVN_GETDISPINFO родительское окно должно проверить содержимое поля mask структуры item. Маски в этом поле определяют, какая информация должна быть предоставлена при обработке извещения. Возможны следующие значения:



































Значение Запрашиваемая информация
LVIF_IMAGE Необходимо заполнить в структуре item поле iImage (номер изображения в списке изображений)
LVIF_STATE Поле state (состояние элемента списка)
LVIF_TEXT В поле pszText необходимо записать адрес буфера, содержащего строку текста


Вот пример обработки извещения LVN_GETDISPINFO:

LV_DISPINFO * lpLvdi = (LV_DISPINFO *)pnmhdr; APPLINFO * lpAppinfo = (APPLINFO *)(lpLvdi->item.lParam); static char szBuf[20]; ... case LVN_GETDISPINFO: { if(lpLvdi->item.mask & LVIF_TEXT) { switch(lpLvdi->item.iSubItem) { case 0: lpLvdi->item.pszText = lpAppinfo->szAppName; break; case 1: lpLvdi->item.pszText = lpAppinfo->szIconName; break; case 2: itoa(lpAppinfo->iCost, szBuf, 10); lpLvdi->item.pszText = szBuf; break; default: break; } break; } }

Если в поле mask установлен флаг LVIF_TEXT , обработчик извещения анализирует поле iSubItem структуры item.

В том случае, когда содержимое этого поля равно 0, требуется получить текстовую строку названия элемента списка. Адрес этой строки определяется с помощью поля lParam структуры item (соответствующее значение было записано в это поле при добавлении элементов к списку макрокомандой ListView_InsertItem ).

Аналогично обрабатывается извещение для первого дополнительного элемента. Второй дополнительный элемент содержит не текстовое, а числовое значение. Поэтому нам приходится выполнять преобразование при помощи функции itoa.

LVN_COLUMNCLICK



Проверяя работу органа управления List View, вы сможете убедиться в том что с его помощью можно легко выполнить сортировку элементов списка по имени или по содержимому дополнительных элементов. Для этого вам достаточно лишь сделать щелчок мышью по заголовку нужного столбца.


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







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий