2010-09-14 34 views
1

我試圖存儲在LV_ITEM的lParam的值:SendMessage函數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始終爲零。最後一個錯誤也會返回零。

任何幫助表示讚賞

回答

1

你設置LV_ITEMLVIF_TEXT+LVIF_PARAM的IMASK?否則,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