1

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 は常にゼロです。Last Error もゼロを返します。

どんな助けでも大歓迎です

4

1 に答える 1

1

の iMask を に設定しましLV_ITEMLVIF_TEXT+LVIF_PARAMか? そうでない場合、構造体の lParamLV_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 
于 2011-02-16T16:56:29.940 に答える