我正在尝试将值存储在LV_ITEM的lParam中:
;...
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始终为零。上次错误也返回零。
感谢任何帮助
答案 0 :(得分:1)
您是否将LV_ITEM
的iMask设置为LVIF_TEXT+LVIF_PARAM
?如果不是,则忽略LV_ITEM
结构中的lParam。
;...
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