1

我正在尝试在 LV_ITEM 的 lParam 中存储一个值:

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

lvi 是一个(本地)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 是一个(本地)LV_ITEM,而 hList 是 ListView 的句柄。现在我可以阅读例如 pszText (lvi.pszText),但 lParam 始终为零。最后一个错误也返回零。

任何帮助表示赞赏

4

1 回答 1

1

您是否将 iMask 设置LV_ITEMLVIF_TEXT+LVIF_PARAMLV_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 
于 2011-02-16T16:56:29.940 回答