2010-09-14 10 views
1

Je suis en train de stocker une valeur dans le lParam d'un LV_ITEM:SendMessage lParam vide

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

LVI est un (LOCAL) LV_ITEM et hList est la poignée de mon contrôle ListView. Si cet élément est maintenant cliqué, j'essaie de lire sa valeur:

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 

Encore une fois LVI est un (LOCAL) LV_ITEM et hList la poignée de ListView. Maintenant, je peux lire par exemple. le pszText (lvi.pszText), mais le lParam est toujours nul. Dernière erreur renvoie également zéro.

Toute aide est appréciée

Répondre

1

Avez-vous mis l'imask du LV_ITEM à LVIF_TEXT+LVIF_PARAM? Sinon, le lParam dans la structure LV_ITEM est ignoré.

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

Vous devrez également faire la demande de la même manière:

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