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



    d8ef8794     

Коды извещений - часть 2


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, вы сможете убедиться в том что с его помощью можно легко выполнить сортировку элементов списка по имени или по содержимому дополнительных элементов. Для этого вам достаточно лишь сделать щелчок мышью по заголовку нужного столбца.




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