SendMessage lParam пусто - PullRequest
       8

SendMessage lParam пусто

1 голос
/ 14 сентября 2010

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

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

1 Ответ

1 голос
/ 16 февраля 2011

Вы установили 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 
...