SendMessage lParam пуст

Я пытаюсь сохранить значение в lParam LV_ITEM:

;...
mov eax, value
mov lvi.lParam, eax
invoke SendMessage, hList, LVM_INSERTITEM, 0 addr lvi

lvi — это (LOCAL) LV_ITEM, а hList — это дескриптор моего элемента управления ListView. Если этот элемент сейчас нажат, я пытаюсь прочитать его значение:

invoke SendMessage,hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED
mov lvi.iItem, eax
mov lvi.iSubItem, 0
mov lvi.imask, LVIF_TEXT
mov lvi.cchTextMax,256
invoke SendMessage,hList,LVM_GETITEM, 0, addr lvi

Опять lvi — это (LOCAL) LV_ITEM, а hList — дескриптор ListView. Теперь я могу читать, например. pszText (lvi.pszText), но lParam всегда равен нулю. Последняя ошибка также возвращает ноль.

Любая помощь приветствуется


person 0x90    schedule 14.09.2010    source источник


Ответы (1)


Вы установили iMask LV_ITEM на LVIF_TEXT+LVIF_PARAM? В противном случае параметр lParam в структуре LV_ITEM игнорируется.

;...
mov lvi.iMask, LVIF_TEXT+LVIF_PARAM
push value
pop lvi.lParam
invoke SendMessage, hList, LVM_INSERTITEM, 0 addr lvi

Вам также нужно будет запросить его таким же образом:

invoke SendMessage,hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED
mov lvi.iItem, eax
mov lvi.iSubItem, 0
mov lvi.imask, LVIF_TEXT+LVIF_PARAM
mov lvi.cchTextMax,256
invoke SendMessage,hList,LVM_GETITEM, 0, addr lvi 
person Sparafusile    schedule 16.02.2011